Abbruch wenn sich 2 Images berühren
-
Hio...
ok folgendes Problem:
Ich brauch ne Abbruchbedingung... wenn ein Image1 (Spieler) Image2 (Gegner) berührt, soll das Spiel abgebrochen werden. Gibts dafür schon ne vorgefertigte Funktion? Ich hab in der Hilfe gesucht, aber solche Funktionen zu finden ist etwas schwer, zumal ich überhaupt nicht weiss, wie die heißen könnte.... google wusste nix, da dacht ich mir, frag ich halt mal hier ^^also ich selbst hab auch versucht das zu lösen, aber es ist soooo ungluablich unschön....
if(Image_player->Left + Image_player->Width >= Image_enemy1->Left && Image_player->Left <= Image_enemy1->Left + Image_enemy1->Width && Image_player->Top + Image_player->Height >= Image_enemy1->Top && Image_player->Top <= Image_enemy1->Top + Image_enemy1->Height) { Application->Terminate(); }Das is ein Teil von meinem Eigenversuch ala Super Mario...
und falls es eine solche Funktion nicht gibt... ist es dann möglich so ne Abbruchbedingung nach Farbe zu machen?
z.B.if(Image_player->Berührfarbe = clMaroon) { Application->Terminate(); }danke... bis denne...
McK
-
Mck,
betrachte die Bilder als Rechtecke und verwende die API-Funktion "IntersectRect". Wenn die Schnittmenge der beiden Bild-Rechtecke wiederum ein Rechteck ergibt, haben sie sich überlagert.
-
aso... heißt das, dass das Bild komplett über dem andern liegen muss?
ALso es is nämlich so.... wenn das PlayerBild mit nur einem Pixel das Bild vom Gegner berührt... dann soll abbgebrochen werden...
-
Zwei Fragen:
Hast Du die Antwort überhaupt gelesen?
Hast Du Dir die Funktion IntersectRect angesehen? Wenn nicht, solltest Du das jetzt machen und erst mal probieren.
-
es hat geklappt! ^^
thx dschenskyund ja, ich hatte die Antwort gelesen, nur etwas falsch verstanden.... ich dachte er meinte, wenn die 2 Bilder sich berühren und zusammen, also auf gleicher Höhe sind, wieder ein Rechteck ergibt, dann wird abgebrochen... aber trotzdem nochmal dganz großes dankeschön
