Das Verfolgen des Spielstatus unterscheidet sich nicht vom Verfolgungsstatus in einem anderen Prolog-Programm. Sie definieren Fakten und treffen anhand dieser Entscheidungen. Es ist ziemlich alt, aber der Artikel Exploring Prolog: Adventures, Objects, Animals und Taxes liefert eine gute Erklärung, wie dies in einem Spiel funktionieren könnte. Aus dem Artikel zusammengefasst:
% Set up - you start in a house
location(you, house).
% Move to a new location.
goto(X) :-
location(you, L), % Read your current location into L
connect(L, X), % Check if you can reach the new location X from L
retract( location(you, L) ), % Remove the old location fact
assert( location(you, X) ). % Add a new location fact. You are in X now.
write($ You are in the $), write(X), nl.
Darüber hinaus benötigen Sie eine Grafik- und E / A-Bibliothek. Es kann kommerzielle Prolog-Distributionen geben, die diese enthalten. Ich kenne SWI Prolog am besten , daher empfehle ich plOpenGL als Ausgangspunkt. Sie erhalten damit nicht nur Zugriff auf die Rendering-Funktionen von OpenGL, sondern auch Bindungen für Maus- und Tastaturereignisse. Um beispielsweise das Drücken der Escape-Taste zu handhaben, definieren Sie eine Tastaturregel wie folgt:
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
Schauen Sie sich das Moving Light-Beispiel von plOpenGL an , um ein paar weitere Details und ein Beispiel für die Handhabung der Mausbewegung zu erfahren .
Wenn Sie eine Grafikbibliothek verwenden, übernimmt diese wahrscheinlich die Spielschleife für Sie. Grundsätzlich kehren Sie die Steuerung der Bibliothek um und stellen Regeln zur Verfügung, die bei Bedarf ausgeführt werden: Einrichten, Neupainting, E / A-Ereignisse usw. Wenn Sie die FPS begrenzen oder den Code zeitabhängig ausführen möchten, können Sie die verstrichene Zeit mithilfe von Zeit / Datum verfolgen Prädikate und treffen Entscheidungen entsprechend.
Es gibt viele Prolog-Varianten, daher ist dies sicherlich nicht die einzige Möglichkeit, ein Spiel zu erstellen. Unterschiedliche Distributionen und verwandte Sprachen verwenden unterschiedliche Bibliotheken / Bindungen, die unterschiedliche Ansätze fördern können. Darüber hinaus empfehlen Ihnen Polyglot-Programmierer möglicherweise, eine "grafikfreundlichere" Hostsprache / -laufzeit zum Verwalten von Rendering und E / A zu verwenden, während Prolog zum Modellieren des Verhaltens von Spieleinheiten und zum Treffen von Entscheidungen verwendet wird.