게임 상태 추적은 다른 Prolog 프로그램의 추적 상태와 다르지 않습니다. 사실을 정의한 다음이를 사용하여 결정을 내립니다. 꽤 오래되었지만 프롤로그 탐색 : 모험, 사물, 동물 및 세금 기사 는 이것이 게임에서 어떻게 작동하는지 설명하는 데 효과적입니다. 기사에서 요약 :
% 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.
그 외에도 그래픽과 IO 라이브러리가 필요합니다. 상용 Prolog 배포판이 포함되어있을 수 있습니다. SWI Prolog에 대해 가장 잘 알고 있으므로 plOpenGL 을 시작점으로 제안 합니다. OpenGL의 렌더링 기능에 액세스 할 수있을뿐만 아니라 마우스 및 키보드 이벤트에 대한 바인딩도 포함합니다. 예를 들어, Esc 키를 누르면 키보드 규칙을 다음과 같이 정의합니다.
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
plOpenGL의 움직이는 조명 예제 에서 몇 가지 자세한 내용과 마우스 움직임 처리 예제 를 살펴보십시오 .
그래픽 라이브러리를 사용하면 게임 루프를 처리 할 수 있습니다. 기본적으로 라이브러리로 제어를 전환하고 설정, 다시 그리기, IO 이벤트 등 적절한 경우 실행할 규칙을 제공합니다. FPS를 제한하거나 시간을 기준으로 조건부로 코드를 실행하려는 경우 시간 / 날짜를 사용하여 경과 시간을 추적 할 수 있습니다 술어 와 그에 따라 결정을 내립니다.
많은 프롤로그 맛이 있으므로 이것이 게임을 만드는 유일한 방법은 아닙니다. 다른 배포판과 관련 언어는 다른 접근 방식을 장려 할 수있는 다른 라이브러리 / 바인딩을 사용합니다. 또한, 폴리 글 로트 프로그래머는 프롤로그를 사용하여 게임 엔티티 동작 및 의사 결정을 모델링하는 동안 렌더링 및 IO를 관리하기 위해보다 "그래픽 친화적"호스트 언어 / 런타임을 사용하도록 권장 할 수 있습니다.