Lo stato del monitoraggio del percorso non è diverso dallo stato del monitoraggio in qualsiasi altro programma Prolog. Definisci fatti e poi li usi per prendere decisioni. È piuttosto vecchio, ma l'articolo Esplorazione del Prolog: avventure, oggetti, animali e imposte fa un buon lavoro di spiegazione come potrebbe funzionare in un gioco. Riassunto dall'articolo:
% 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.
Oltre a ciò, hai bisogno di una grafica e di una libreria di I / O. Potrebbero esserci distribuzioni Prolog commerciali che li includono. Sono più familiare con SWI Prolog , quindi suggerirò plOpenGL come punto di partenza. Non solo ti dà accesso alle funzionalità di rendering di OpenGL, ma include anche associazioni per eventi mouse e tastiera. Ad esempio, per gestire una pressione del tasto Esc, si definisce una regola della tastiera in questo modo:
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
Dai un'occhiata al esempio di moving light di plOpenGL per qualche altro dettaglio e un esempio di gestione del movimento del mouse.
Se usi una libreria grafica, probabilmente gestirà il ciclo di gioco per te. In pratica, si inverte il controllo nella libreria e si forniscono le regole da eseguire quando appropriato: configurazione, ridisegno, eventi IO, ecc. Se si desidera limitare FPS o eseguire il codice in modo condizionale in base al tempo, è possibile tenere traccia del tempo trascorso utilizzando previsioni di ora / data e prendere decisioni di conseguenza.
Ci sono molti gusti Prolog, quindi questo non è certamente l'unico modo per costruire un gioco. Diverse distribuzioni e linguaggi correlati utilizzeranno librerie / associazioni diverse che potrebbero incoraggiare approcci diversi. Inoltre, i programmatori poliglotta potrebbero incoraggiarti a utilizzare un linguaggio / runtime host più "grafico" per gestire il rendering e l'IO mentre usi Prolog per modellare comportamenti e processi decisionali di gioco.