AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bereich in einer Painbox nach einer Farbe durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

Bereich in einer Painbox nach einer Farbe durchsuchen

Ein Thema von bl4ckb1rd · begonnen am 20. Feb 2009 · letzter Beitrag vom 20. Feb 2009
Antwort Antwort
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#1

Bereich in einer Painbox nach einer Farbe durchsuchen

  Alt 20. Feb 2009, 16:24
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Bereich in einer Painbox nach einer Farbe durchsuchen

  Alt 20. Feb 2009, 16:26
Überprüfe nicht auf den Canvas sondern die Positionen der Figuren.
Markus Kinzler
  Mit Zitat antworten Zitat
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#3

Re: Bereich in einer Painbox nach einer Farbe durchsuchen

  Alt 20. Feb 2009, 16:42
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);
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Bereich in einer Painbox nach einer Farbe durchsuchen

  Alt 20. Feb 2009, 16:47
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
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Bereich in einer Painbox nach einer Farbe durchsuchen

  Alt 20. Feb 2009, 16:50
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ß
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
bl4ckb1rd

Registriert seit: 3. Okt 2008
53 Beiträge
 
#6

Re: Bereich in einer Painbox nach einer Farbe durchsuchen

  Alt 20. Feb 2009, 16:54
@ Fussball-robby: danke nur beim schuss wird es bisschen fummelig werden da es eine linie ist aber sehr guter ansatz DANKE!!!!
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Bereich in einer Painbox nach einer Farbe durchsuchen

  Alt 20. Feb 2009, 17:01
Zitat von bl4ckb1rd:
@ Fussball-robby: danke nur beim schuss wird es bisschen fummelig werden da es eine linie ist aber sehr guter ansatz DANKE!!!!
Kein Problem 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ß
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:49 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