L'état du jeu de suivi n'est pas différent de l'état de suivi dans tout autre programme Prolog. Vous définissez des faits et les utilisez ensuite pour prendre des décisions. C'est assez vieux, mais l'article Exploring Prolog: Adventures, Objects, Animals, and Taxes explique bien comment cela pourrait fonctionner dans un jeu. Résumé de l'article:
% 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.
Au-delà de cela, vous avez besoin d'une bibliothèque graphique et IO. Il peut y avoir des distributions commerciales Prolog qui les incluent. Je connais bien SWI Prolog , donc je proposerai plOpenGL comme point de départ. Non seulement il vous donne accès aux capacités de rendu d'OpenGL, mais il comprend également des liaisons pour les événements de souris et de clavier. Par exemple, pour gérer une pression sur la touche Échap, vous définissez une règle de clavier comme suit:
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
Jetez un œil à l' exemple de la lumière mobile de plOpenGL pour quelques détails supplémentaires et un exemple de gestion des mouvements de la souris.
Si vous utilisez une bibliothèque graphique, elle gérera probablement la boucle du jeu pour vous. Fondamentalement, vous inversez le contrôle de la bibliothèque et fournissez des règles à exécuter le cas échéant: configuration, repeinture, événements d'E / S, etc. Si vous souhaitez limiter FPS ou exécuter le code de manière conditionnelle en fonction du temps, vous pouvez suivre le temps écoulé en utilisant l' heure / la date prédicats et prendre des décisions en conséquence.
Il existe de nombreuses versions de Prolog, ce n'est donc certainement pas le seul moyen de créer un jeu. Différentes distributions et langages associés utiliseront différentes bibliothèques / liaisons qui peuvent encourager différentes approches. De plus, les programmeurs polyglottes peuvent vous encourager à utiliser un langage / runtime hôte plus "graphique" pour gérer le rendu et les E / S tout en utilisant Prolog pour modéliser les comportements des entités de jeu et la prise de décision.