Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: RPG Spiel - Flackern bei mehreren Grafiken

  Alt 8. Mai 2013, 21:11
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.
fork me on Github

Geändert von sx2008 ( 8. Mai 2013 um 21:20 Uhr)
  Mit Zitat antworten Zitat