Du bist ja ganz schön fix.
Also das Problem ist die
procedure pause
.
Innerhalb dieser Procedure wird
Application.ProcessMessages
aufgerufen.
Wenn der Spieler Pfeil-nach-oben drückt, wird
PlayerMoveUp
aufgerufen.
Dann wird eine Animation mit 5 Zuständen gestartet mit dazwischen 4 * pause.
Während dieser Zeit könnte der Spieler wieder eine andere Taste drücken.
Wie ich jetzt gesehen habe, verriegelst du weitere Richtungs-Tasten mit dem Boolean-Flag
Move
.
So wie's jetzt ist, ist es etwas unschön aber ich würd's jetzt nicht mehr als Fehler betrachten.
Damit kann der Spieler aber nicht auf halben Wege umdrehen.
Es kommt natürlich auf das Spiel an, ob man das überhaupt zulassen möchte.
Würdest du dir die Richtung und die Nummer der Animationssequenz merken, dann könntest du statt der
procedure pause
auch einen Timer verwenden.
Im Timer-Event
OnTimer
könnest du die Animationssequenznr hochzählen und jeweils das Spielerbild anpassen.
Würde der Spieler zurück wollen, könntest du die Animation umkehren.
Das ist natürlich etwas schwieriger als die Lösung, die du z.Zt. hast.
Ansonsten solltest du den Block mit Variablen:
Delphi-Quellcode:
var RunUp,RunLeft,RunRight,RunDown:boolean;
Move:boolean;
Speed:integer;
in die Klasse TForm1 unter
private
verschieben. Schlüsselwort
var
entfällt dann.