Status pelacakan game tidak berbeda dengan status tracking dalam program Prolog lainnya. Anda mendefinisikan fakta dan kemudian menggunakannya untuk mengambil keputusan. Ini sudah cukup tua, tetapi artikel Menjelajahi Prolog: Petualangan, Objek, Hewan, dan Pajak melakukan pekerjaan yang baik untuk menjelaskan bagaimana ini bisa bekerja dalam permainan. Dirangkum dari artikel:
% 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.
Di luar itu, Anda memerlukan perpustakaan grafis dan IO. Mungkin ada distribusi Prolog komersial yang menyertakannya. Saya paling akrab dengan Prolog SWI , jadi saya akan menyarankan plOpenGL sebagai titik awal. Tidak hanya memberi Anda akses ke kemampuan rendering OpenGL, ia juga mencakup binding untuk acara mouse dan keyboard. Misalnya, untuk menangani penekanan tombol Escape, Anda menetapkan aturan keyboard seperti:
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
Lihatlah contoh cahaya bergerak plOpenGL untuk beberapa detail lebih lanjut dan contoh penanganan gerakan mouse.
Jika Anda menggunakan perpustakaan grafik, itu kemungkinan akan menangani loop permainan untuk Anda. Pada dasarnya, Anda membalikkan kontrol ke pustaka dan memberikan aturan untuk dieksekusi saat yang tepat: mengatur, mengecat, acara IO, dll. Jika Anda ingin membatasi FPS atau menjalankan kode secara kondisional berdasarkan waktu, Anda dapat melacak waktu yang telah berlalu menggunakan waktu / tanggal predikat dan membuat keputusan yang sesuai.
Ada banyak rasa Prolog, jadi ini tentu bukan satu-satunya cara untuk membangun gim. Distribusi dan bahasa terkait yang berbeda akan menggunakan perpustakaan / binding yang berbeda yang dapat mendorong pendekatan yang berbeda. Selain itu, programmer polyglot dapat mendorong Anda untuk menggunakan bahasa host / runtime yang lebih "ramah grafis" untuk mengelola render dan IO saat menggunakan Prolog untuk memodelkan perilaku entitas game dan pengambilan keputusan.