![]() |
Grenzen? Oo
Liste der Anhänge anzeigen (Anzahl: 1)
hi :D
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:
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!
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; |
Re: Grenzen? Oo
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:
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. ;)
If Maus.Left > ClientWidth then
Maus.Left := ClientWidth - Maus.Width; |
Re: Grenzen? Oo
Danke für Die antwort aber es geht nicht :( keine ahnung wieso :((((
|
Re: Grenzen? Oo
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; |
Re: Grenzen? Oo
:wall: es geht immer noch nicht :( ich finde irgentwie keine Logik in diesem Fehler :(
|
Re: Grenzen? Oo
Dann musst du schon mal deinen Quellcode zeigen, sonst können wir auch nur raten :roll:
|
Re: Grenzen? Oo
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; |
Re: Grenzen? Oo
Du überprüfst da aber nur jeweils rechts und unten!
|
Re: Grenzen? Oo
ach.. ist mir garnich aufgefallen :shock:
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. |
Re: Grenzen? Oo
Liste der Anhänge anzeigen (Anzahl: 1)
:( 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 :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz