Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.130 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Spiel - Figur soll nicht über Hindernisse (Shapes) laufen

  Alt 28. Mär 2018, 09:27
Aber bitte keine Kollisionsabfrage über Pixel auf dem Bildschirm...

Stell Dir vor Dein Spiel müsste komplett ohne Tastatureingaben und ohne Bildschirm laufen.
Am besten, wenn Deine Spiellogik komplett ohne Form funktioniert.

Also hast Du eine Routine der Du die Bewegungsrichtung übergibst. Und die Daten, wie Deine Räume aussehen. Bitte nicht FIX in den Code hacken...

Vielleicht ein 2 DIM-Array für X und Y
Darin stehen bytes oder was auch immer... Vielleicht ein Aufzählungstyp...

TFeldType = (ftFrei,ftWand,ftBlume); Oder ein Byte mit der Image Nummer...

wenn Du nun den Raum aufbraust, stellst Du einfach nur die Daten aus dem Array dar...

Wenn Dein Spieler also bei Position X=10,Y=10 ist, kannst Du einfach Abfragen:

Delphi-Quellcode:
Case Bewegungsrichtung of
  Hoch : if Feld[Player.X,Player.Y-1] = ftFrei
           then KannHoch := true
           else KannHoch := false;
 Links : if Feld[Player.X-1,Player.Y] = ftFrei
           then KannLinks := true
           else KannLinks := false;
// usw.
end; // of case
Dann kannst Du auch einfach Deine Game-Logik testen... (z.B. mit Unittests)


Delphi-Quellcode:
Procedure TesteLogik;
begin
  GameEngine.Player := TPlayer.Create(10,10);
  GameEngine.Bewege(Hoch);
  GameEngine.Bewege(Hoch);
  Check(GameEngine.KannHoch,'Fehler in der Logik'); // Da steh eine Wand - kann nicht sein!
end;
Mavarik
  Mit Zitat antworten Zitat