Thema: Delphi Pac Man programmieren

Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

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

AW: Pac Man programmieren

  Alt 1. Feb 2018, 15:08
OK,
Kleine Anleitung wie man Spiele Programmiert.

Ein Thread erzeugt alle 16.6 ms ein neues Frame – schneller macht heute bei TFT’s mit 60Hz keinen Sinn. Klar gib es auch schnellere TFT’S! Aber bleiben wir mal bei diesen 60Hz
Man benötigt also eine Routine die so ein neues Frame erzeugen kann.
Die Main-Game-Loop sieht also im groben so aus:

Delphi-Quellcode:
begin
  while InGame do
    begin
      Timer.Start;
      NewFrame := GameEngine.GetFrame;
      Timer.Stop
      if Timer.Elapsed < 16.6666 then
        GameEngine.PreprocessnextFame(16.66 – Timer.Elapsed); // Zeit nutzen sonst sleep
      MainScreen.BeginUpdate
      try
        MainScreen.Assign(NewFrame);
      finally
        MainScreen.EndUpdate
      end;
    end;
end;
Außerhalb gibt s noch die Maus/Keyboard Abfrage die ihre Daten an die Gameengine weiter gibt.
Wer das nicht im Thread machen möchte (also für Anfänger einfacher) nimmt einfach einen Timer.
Den stellt man auf 15. Wirklich schneller geht es eh nicht.

Jetzt zu PacMan: Man braucht:
Einiges an array’s und Definitionen
StartPos Geister und PacMan, Imagefolge für die Bewegungen in allen Richtungen, Variablen für Position und Richtungen.
Am besten je ein Object pro Geist und PacMan mit allen Daten

Neben den „hochauflösenden“ X/Y Positionen, führt man intern ein LowRes Array mit der Position mit. Einfache XY Koordinaten. Um Wende und andere Objekte zu finden.
Ein Aufruf von GameEngine.GetFrame erzeugt also genau ein Frame und entscheidet wo was gemalt werden muss.
Nicht jeder Frame muss alles bewegen. Ggf. bewegt sich ein Geist nicht, weil er sich nur alle 2 Frames bewegen darf (sonst ist er zu schnell) oder die Power-Points blinken halt auch nicht mit 60Hz. USW.

So das war es erstmal für den Anfang.

Mavarik

PS.: Das gelöschte vom letzten Posting
Miniaturansicht angehängter Grafiken
arrays.jpg  
Angehängte Dateien
Dateityp: txt Feld.txt (441 Bytes, 7x aufgerufen)

Geändert von Mavarik ( 1. Feb 2018 um 15:13 Uhr)
  Mit Zitat antworten Zitat