Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bereich in einer Painbox nach einer Farbe durchsuchen (https://www.delphipraxis.net/129527-bereich-einer-painbox-nach-einer-farbe-durchsuchen.html)

bl4ckb1rd 20. Feb 2009 15:24


Bereich in einer Painbox nach einer Farbe durchsuchen
 
In Delphi sollen wir ein Spiel programmieren. Leider haben wir noch nicht gelernt wie man Spiel-Engines wie zb. Andorra benutzt. Nur Standart-Sachen wie for-schleifen, if-verzweigungen, buttons, painbox, timer usw.

Nun hatte ich die Idee einen 2D zombie shooter in einer Imagebox zu programmieren. Jetzt hänge ich gerade an dem Punkt wo ich die Kollision zwischen Zombie und meinem Schuss finden möchte. Mein Schuss ist eine weiße linie die von meine Spieler bis zum Punkt führt wo ich mit der Maus geklickt habe.
Ein Zombie ist rot. So dachte benutze ich einfach diese Zeile um zu prüfen ob ich jetzt einen roten zombie getrofen hab oder nicht: image1.Canvas.Pixels[botx,boty]=clwhite . Wenn der Pixel im Bot/Zombie weiß ist, so soll dieser verschwinden. Leider wird da genau 1 Pixel überprüft. Der Zombie besteht aber aus mehreren Pixel, genauer gesagt ein Kreis (Ellypse). Wie kann ich jetzt nun prüfen ob die weiße Linie im Bot drin ist oder nicht?

Wäre um Hilfe sehr dankbar!

mkinzler 20. Feb 2009 15:26

Re: Bereich in einer Painbox nach einer Farbe durchsuchen
 
Überprüfe nicht auf den Canvas sondern die Positionen der Figuren.

bl4ckb1rd 20. Feb 2009 15:42

Re: Bereich in einer Painbox nach einer Farbe durchsuchen
 
und wie wird sowas aussehen?

meine figur steht hier: image1.Canvas.ellipse(meinstartX-10,meinStartY-10,meinStartX+10,meinStartY+10);
der Gegner hier: image1.Canvas.ellipse(botx-7,boty-7,botx+7,boty+7);
der Schuss: image1.Canvas.MoveTo(meinstartx,meinstarty);
image1.Canvas.LineTo(x,y);

mkinzler 20. Feb 2009 15:47

Re: Bereich in einer Painbox nach einer Farbe durchsuchen
 
Vergleiche die Positionen:

Wenn
Schuss.x >= Figur.x und Schuss.x <= Figur.x + Figur.Width und
Schuss.y >= Figur.y und Schuss.y <= Figur.y + Figur.Height

Fussball-Robby 20. Feb 2009 15:50

Re: Bereich in einer Painbox nach einer Farbe durchsuchen
 
Der Gegner ist doch ein Kreis. Du kennst seine Position und die Position des Schusses. Also berechnest du den Abstand vom Schuss zum Mittelpunkt des Gegners. Und wenn dieser Abstand kleiner ist als der Radius des Gegners, ist der Schuss "im Gegner drin", also wurde er getroffen.

Gruß

bl4ckb1rd 20. Feb 2009 15:54

Re: Bereich in einer Painbox nach einer Farbe durchsuchen
 
@ Fussball-robby: danke :D nur beim schuss wird es bisschen fummelig werden da es eine linie ist aber sehr guter ansatz :D DANKE!!!!

Fussball-Robby 20. Feb 2009 16:01

Re: Bereich in einer Painbox nach einer Farbe durchsuchen
 
Zitat:

Zitat von bl4ckb1rd
@ Fussball-robby: danke :D nur beim schuss wird es bisschen fummelig werden da es eine linie ist aber sehr guter ansatz :D DANKE!!!!

Kein Problem :wink: Die Tatsache, dass der Schuss eine Linie ist, dürfte es aber nicht groß erschweren. Du führst die Berechnung einfach mit dem Anfangs- und dem Endpunkt der Linie aus, und wenn mindestens einer der beiden im Gegner ist, wurde getroffen.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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