Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Spezielle Frage zu TCanvas und TShape (https://www.delphipraxis.net/127245-spezielle-frage-zu-tcanvas-und-tshape.html)

Forlan 9. Jan 2009 21:22


Spezielle Frage zu TCanvas und TShape
 
Hallo zusammen!

Ich habe gerade folgendes Problem...
Zur Zeit programmiere ich ein Spiel, wobei alles wunderbar soweit funktioniert. Ich bewege eine Figur (zur Zeit erstmal nur ein Shape) auf meinem Spiel, welches ich mit TCanvas gezeichnet habe... Wenn dann aber die Figur auf ein Hinderniss trifft, (ebenfalls mit TCanvas gezeichnet) soll die Figur stehen bleiben..
Und genau da ist mein Problem... Ich finde in diesem Fall einfach keinen Ansatz... ich hab mir schon so Sachen überlegt, wie z.B. wenn das Shape.Pen.Color auf eine bestimmte Farbe halt trifft, das dann meine boolsche Variable auf False gesetzt wird...
Nur wie realisiert man das?

mkinzler 9. Jan 2009 21:29

Re: Spezielle Frage zu TCanvas und TShape
 
Du benötigst eine Kollisionsabfrage. Am Einfachsten anhand der Koordinaten einen geometischen Hülle um die Figur ( z.B. Rechteck)

Forlan 9. Jan 2009 21:32

Re: Spezielle Frage zu TCanvas und TShape
 
ok, sollte machbar sein... Auf sowas in der art bin ich auch schon gekommen, dachte aber vllt. gibt es eine einfachere Möglichkeit mit direkter Abfrage :)

Naja, dennoch danke!

mkinzler 9. Jan 2009 21:35

Re: Spezielle Frage zu TCanvas und TShape
 
Für Speile solltest du aus Geschwindigkeitsgründen vielleicht eher auf DirectX ( Z.B. Andorra2D) oder OpenGL setzen

Forlan 9. Jan 2009 21:37

Re: Spezielle Frage zu TCanvas und TShape
 
Es wird ja nichts Großes... Mir ist nur so eine Art Spiel in den Sinn gekommen und da hatte ich mal Lust das zu programmieren... Mit Andorra habe ich mich schon etwas befasst, werde es auch für spätere Spielideen nutzen =)

Noedel 9. Jan 2009 21:54

Re: Spezielle Frage zu TCanvas und TShape
 
wenn der Hintergrund einfarbig ist, sollte es reichen, die Farbe des Pixels abzufragen, auf das man das Figürchen setzen will. (canvas.Pixels)

DeddyH 9. Jan 2009 22:13

Re: Spezielle Frage zu TCanvas und TShape
 
Mal eine Überlegung für den einfachsten Fall (2 Rechtecke):
eine Kollision liegt dann vor, wenn
- eine Ecke des Quellrechtecks (bewegliches Objekt) innerhalb des Zielrechtecks (Hindernis) liegt oder
- eine Kante des Quellrechtecks das Zielrechteck schneidet

Forlan 11. Jan 2009 17:29

Re: Spezielle Frage zu TCanvas und TShape
 
Ich hab versucht das mal so jetzt zu lösen, jedoch passiert etwas das nicht passieren soll....^^

Delphi-Quellcode:
  if oben then //oben ist true wenn vk_up gedrückt wird...
    begin
      if ((sPlayer.Top-5 <> iSpielfeld.Top) or (iSpielfeld.Canvas.Pixels[sPlayer.Left,sPlayer.Top-5]<>clBlue)) then
        sPlayer.Top := sPlayer.Top-1; //sPlayer :TShape
    end;
wenn ich den teil nach "or" weglasse, bleibt meine figur immerhin im feld... sobald ich den Teil nach "or" hinzufüge, kann meine figur aus dem Image hinausgehen O.o... Der Teil nach dem OR soll sein, das wenn ich in meinem hier noch am programmierenden editor hinderhisse hinzufügen will, dass die figur auch da stehen bleibt... jedoch funktioniert das leider so nicht.. :?
jemand eine Idee?

DeddyH 11. Jan 2009 17:32

Re: Spezielle Frage zu TCanvas und TShape
 
Müsste das nicht ein and statt einem or sein?

Forlan 11. Jan 2009 17:34

Re: Spezielle Frage zu TCanvas und TShape
 
mit dem and hab ich es schon versucht, so bleibt die figur zwar in dem image, aber wenn ich etwas in clBlue färbe bleibt die figur trotzdem nicht stehen :?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:06 Uhr.
Seite 1 von 2  1 2      

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