Theo dõi trạng thái trò chơi không khác gì trạng thái theo dõi trong bất kỳ chương trình Prolog nào khác. Bạn xác định sự thật và sau đó sử dụng chúng để đưa ra quyết định. Nó khá cũ, nhưng bài viết Khám phá Prolog: Adventures, Object, Animal và Taxes thực hiện tốt công việc giải thích cách thức này có thể hoạt động trong một trò chơi. Tóm tắt từ bài viết:
% 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.
Ngoài ra, bạn cần một thư viện đồ họa và IO. Có thể có các bản phân phối Prolog thương mại bao gồm chúng. Tôi quen thuộc nhất với SWI Prolog , vì vậy tôi sẽ đề xuất plOpenGL làm điểm khởi đầu. Nó không chỉ cung cấp cho bạn quyền truy cập vào khả năng kết xuất của OpenGL, nó còn bao gồm các ràng buộc cho các sự kiện chuột và bàn phím. Ví dụ: để xử lý nhấn phím Escape, bạn xác định quy tắc bàn phím như sau:
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
Hãy xem ví dụ về ánh sáng di chuyển của plOpenGL để biết thêm chi tiết và một ví dụ về xử lý chuyển động của chuột.
Nếu bạn sử dụng thư viện đồ họa, nó có thể sẽ xử lý vòng lặp trò chơi cho bạn. Về cơ bản, bạn đảo ngược điều khiển vào thư viện và cung cấp các quy tắc được thực thi khi thích hợp: thiết lập, sơn lại, các sự kiện IO, v.v. Nếu bạn muốn giới hạn FPS hoặc chạy mã theo điều kiện theo thời gian, bạn có thể theo dõi thời gian đã trôi qua bằng thời gian / ngày vị ngữ và đưa ra quyết định phù hợp.
Có nhiều hương vị Prolog, vì vậy đây chắc chắn không phải là cách duy nhất để xây dựng một trò chơi. Các bản phân phối khác nhau và các ngôn ngữ liên quan sẽ sử dụng các thư viện / ràng buộc khác nhau có thể khuyến khích các cách tiếp cận khác nhau. Ngoài ra, các lập trình viên polyglot có thể khuyến khích bạn sử dụng ngôn ngữ máy chủ / thời gian chạy "thân thiện với đồ họa" hơn để quản lý kết xuất và IO trong khi sử dụng Prolog để mô hình hóa các hành vi và ra quyết định của thực thể trò chơi.