Delphi-Quellcode:
procedure TSpieler.DoCollision(Sprite:TSprite; var Done:Boolean);
begin
if sprite is TWand then
case Spieler.richtung of //richtung von der man kommt
1: y := y + 1; //wenn man nach oben läuft und die Wand berührt
2: x := x - 1; //wenn man nach rechts läuft und die Wand berührt
3: y := y - 1; //wenn man nach unten läuft und die Wand berührt
4: x := x + 1; //wenn man nach links läuft und die Wand berührt
end;
end;
TSpieler wäre das Sprite das sich im Labyrinth bewegt und TWand halt die 32x32 große Sprites die die Wand darstellen sollen!
richtung muss bei TSpieler als integer vereinbart werden und bei DoMove je nach richtung geändert werden!
1 -> nach oben
2 -> rechts
3 -> unten
4 -> links
So müsste es funktionieren das TSpieler nicht auf die Wand läuft, bzw. bevor es angezeigt wird das TSpieler auf die Wand läuft wird TSpieler wieder zurück gesetzt in die richtung von der er kam!
PS: Ich hoffe ich hab das Problem richtig vertsanden!