AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Grenzen? Oo

Ein Thema von Rickiwarhammer · begonnen am 15. Mär 2007 · letzter Beitrag vom 19. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#1

Grenzen? Oo

  Alt 15. Mär 2007, 19:48
hi
ich habe ein kleines Problem mit nem Spiel XD
Also das Spiel ist eine Art Katz und Maus Spiel man hat die Maus und muss vor der Katze flüchten! So hier mein problem: ich ahbe bis jetzt zwei shapes für Katze und Maus benutzt! man kann die Maus mit den Pfeiltasten Steuern (soweit so gut) Aber jeztztz wollte ich Grenzen ins Spiel einbauen damit nicht die katze oder die Maus einfach mal stunden durch das Spiel läuft und man einen Meter lagnen Scroll Bar hat XD hier so hatte ich das gemacht:
Delphi-Quellcode:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
If Maus.Left > ClientWidth then
Maus.Left := ClientWidth;
If Katze.Left > ClientWidth then
Katze.Left := ClientWidth;
If Maus.Top > ClientHeight then
Maus.Top := ClientHeight;
If Katze.Top > ClientHeight then
Katze.Top := ClientHeight;
end;
Ich hatte das immer so geamcht um jetzt nicht tausende Rects und so zu benutzen ^-^ Es hat immer geklappt bis auf jetzt Oo sie Maus kann immer noch raus! aber wieso bitte brauche hilfe!
Angehängte Dateien
Dateityp: rar katz_und_maus_818.rar (161,5 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Grenzen? Oo

  Alt 15. Mär 2007, 19:53
Hi,

herzlich willkommen!

Ohne den Anhang gesehen zu haben, ist mir eines aufgefallen. Du setzt die Katze und die Maus im Grenzfall genau an die Außengrenze des Formulars. Es müsste eher so aussehen:

Delphi-Quellcode:
If Maus.Left > ClientWidth then
  Maus.Left := ClientWidth - Maus.Width;
Edit: Aber das in einem Timer zu prüfen ist nichts. Führe diese Abfragen beispielsweise im "OnKeyPress" aus und reagiere darauf. So kannst du direkt feststellen, ob du die zwei Objekte neu platzieren kannst und wenn nicht, dann machst du es auch nicht.
  Mit Zitat antworten Zitat
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Grenzen? Oo

  Alt 16. Mär 2007, 15:01
Danke für Die antwort aber es geht nicht keine ahnung wieso (((
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Grenzen? Oo

  Alt 16. Mär 2007, 15:04
Bedenke, dass wenn du auf Maus.Left>ClientWidth prüfst, die Bedingung erst erfüllt ist, wenn die Maus bereits GANZ aus dem Bild raus ist. Es müsste also heißen:
Delphi-Quellcode:
If Maus.Left+Maus.Width > ClientWidth then
  Maus.Left := ClientWidth - Maus.Width;
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Grenzen? Oo

  Alt 16. Mär 2007, 15:08
es geht immer noch nicht ich finde irgentwie keine Logik in diesem Fehler
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Grenzen? Oo

  Alt 16. Mär 2007, 15:10
Dann musst du schon mal deinen Quellcode zeigen, sonst können wir auch nur raten
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Grenzen? Oo

  Alt 16. Mär 2007, 15:16
ich hatte mal sowas ähnliches, sollte so in etwa funktionieren:
Delphi-Quellcode:
if (Maus.Left+Maus.Width) > Spielfeld.ClientWidth then
  Maus.Left := Spielfeld.ClientWidth - Maus.Width;

If (Katze.Left+Katze.Width) > Spielfeld.ClientWidth then
  Katze.Left := Spielfeld.ClientWidth-Katze.Width;

If (Maus.Top+Maus.Height) > Spielfeld.ClientHeight then
  Maus.Top := Spielfeld.ClientHeight - Maus.Height;

If (Katze.Top+Katze.Height) > Spielfeld.ClientHeight then
  Katze.Top := Spielfeld.ClientHeight-Katze.Height;
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von R2D2
R2D2

Registriert seit: 20. Jan 2006
Ort: München
253 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Grenzen? Oo

  Alt 16. Mär 2007, 15:39
Du überprüfst da aber nur jeweils rechts und unten!
if then then then = else else else = then;

Meine Webseite
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Grenzen? Oo

  Alt 16. Mär 2007, 15:41
ach.. ist mir garnich aufgefallen
er überprüft ja auch nur rechts und unten, ich denke links und oben ist klar, weil man da nicht noch zusätzlich was rechnen muss.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Rickiwarhammer

Registriert seit: 15. Mär 2007
Ort: Frankfurt
14 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Grenzen? Oo

  Alt 16. Mär 2007, 19:40
Hmm das ist komisch könnte es vielleicht daran liegen das ich das ganze mit ieine DXInput mache? Aber hier ist mal die neuere Version meines Spiels hoffe das klappt irgentwann
Angehängte Dateien
Dateityp: rar katz_und_maus_190.rar (162,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz