Śledzenie stanu gry nie różni się od stanu śledzenia w żadnym innym programie Prolog. Definiujesz fakty, a następnie wykorzystujesz je do podejmowania decyzji. Jest dość stary, ale artykuł Exploring Prolog: Adventures, Objects, Animals, and Taxes dobrze wyjaśnia, jak to może działać w grze. Podsumowane z artykułu:
% 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.
Poza tym potrzebujesz grafiki i biblioteki IO. Mogą istnieć komercyjne dystrybucje Prolog, które je zawierają. Najbardziej znam SWI Prolog , więc proponuję plOpenGL jako punkt wyjścia. Nie tylko daje ci dostęp do możliwości renderowania OpenGL, ale także zawiera powiązania dla zdarzeń myszy i klawiatury. Na przykład, aby obsłużyć naciśnięcie klawisza Escape, zdefiniuj regułę klawiatury w następujący sposób:
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
Spójrz na przykład ruchomego światła plOpenGL, aby uzyskać więcej szczegółów i przykład obsługi ruchu myszy.
Jeśli korzystasz z biblioteki graficznej, prawdopodobnie obsłuży ona pętlę gry. Zasadniczo odwracasz kontrolę nad biblioteką i udostępniasz reguły, które należy wykonać w odpowiednich przypadkach: konfigurowanie, odświeżanie, zdarzenia we / wy itp. Jeśli chcesz ograniczyć liczbę klatek na sekundę lub uruchomić kod warunkowo na podstawie czasu, możesz śledzić upływ czasu za pomocą godziny / daty dokonuje predykcji i odpowiednio podejmuje decyzje.
Istnieje wiele smaków Prologa, więc z pewnością nie jest to jedyny sposób na zbudowanie gry. Różne dystrybucje i powiązane języki będą używać różnych bibliotek / powiązań, które mogą zachęcać do różnych podejść. Ponadto programiści oprogramowania Polyglot mogą zachęcać do korzystania z bardziej „przyjaznego graficznie” języka hosta / środowiska wykonawczego do zarządzania renderowaniem i operacjami we / wy podczas korzystania z programu Prolog do modelowania zachowań podmiotów i podejmowania decyzji.