Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Kollisionsabfrage mit if funktoniert nicht (https://www.delphipraxis.net/160230-kollisionsabfrage-mit-if-funktoniert-nicht.html)

Coxy 3. Mai 2011 18:56

Delphi-Version: 5

Kollisionsabfrage mit if funktoniert nicht
 
Hallo,
ich bin kurz davor mein Projekt zu beenden, allerdings fehlt mir noch das wichtigste und zwar die Kollisionsabfrage.
Da mir die meisten Lösenungen im Internet nicht verständlich und lang waren habe ich diese versucht selbst wie folgt zu lösen:

Delphi-Quellcode:
if (img_mario.left < img_stern.left) and (img_mario.Left > img_stern.left + img_stern.Width) then Punkte + 1;
if (img_mario.top < img_stern.top) and (img_mario.top > img_stern.Top + img_stern.Height) then Punkte + 1;
Mario ist ein image, welches man mit den Richtungstasten Steuern kann und der Stern ist ein Image welches sich von alleine bewegt.

Leider kommt bei mir der Fehler:
Anweisung erforderlich, aber Ausdruck von Typ Integer gefunden

Wie löse ich das am einfachsten?

Edlmann 3. Mai 2011 19:00

AW: Kollisionsabfrage mit if funktoniert nicht
 
Ersetz mal
Delphi-Quellcode:
Punkte + 1;
durch
Delphi-Quellcode:
Punkte := Punkte + 1;

DeddyH 3. Mai 2011 19:03

AW: Kollisionsabfrage mit if funktoniert nicht
 
1)
Zitat:

Delphi-Quellcode:
if (img_mario.left < img_stern.left) and (img_mario.Left > img_stern.left + img_stern.Width)

Wie kann img_mario.left gleichzeitig kleiner als img_stern.left und größer als img_stern.left + img_stern.Width sein?
2)
Zitat:

Delphi-Quellcode:
then Punkte + 1;

Entweder
Delphi-Quellcode:
Punkte := Punkte + 1;
oder
Delphi-Quellcode:
inc(Punkte);

rollstuhlfahrer 3. Mai 2011 19:12

AW: Kollisionsabfrage mit if funktoniert nicht
 
Ich würde für die Kollisionsabfrage mit Delphi-Referenz durchsuchenPiInRect() prüfen. Und zwar alle 4 Eckpunkte der kleineren Komponente innerhalb der Fläche der größeren Komponente. Das finde ich auch übersichtlicher.

Bernhard

DeddyH 3. Mai 2011 19:18

AW: Kollisionsabfrage mit if funktoniert nicht
 
Noch einfacher wäre es IMO mit IntersectRect.

ConnorMcLeod 3. Mai 2011 19:28

AW: Kollisionsabfrage mit if funktoniert nicht
 
Zitat:

Zitat von Coxy (Beitrag 1098693)
then Punkte + 1;

???

nuclearping 3. Mai 2011 19:38

AW: Kollisionsabfrage mit if funktoniert nicht
 
Wozu ein neuer Thread?

http://www.delphipraxis.net/160154-f...die-mauer.html

Luckie 3. Mai 2011 19:41

AW: Kollisionsabfrage mit if funktoniert nicht
 
Und auch noch der gleiche Fehler. :roll:

Coxy 3. Mai 2011 22:04

AW: Kollisionsabfrage mit if funktoniert nicht
 
Zitat:

Zitat von DeddyH (Beitrag 1098695)
1)
Zitat:

Delphi-Quellcode:
if (img_mario.left < img_stern.left) and (img_mario.Left > img_stern.left + img_stern.Width)

Wie kann img_mario.left gleichzeitig kleiner als img_stern.left und größer als img_stern.left + img_stern.Width sein?

nehmen wir nur mal die obere Seite eines Vierecks,

dann soll es immer einen Punkt geben wenn die andere Figur durch diese Seite läuft
und dieser Bereich ist doch zwischen img_stern.left und im_stern.left + plus seiner eigenen Breite oder etwa nicht?

Daniel 3. Mai 2011 22:08

AW: Kollisionsabfrage mit if funktoniert nicht
 
Zitat:

Zitat von nuclearping (Beitrag 1098710)


Da es sich um die gleiche Frage der gleichen Person handelt, mache ich aus Gründen der Übersichtlichkeit hier mal zu und verweise auf den bereits bestehenden Thread.


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