İzleme durumu, diğer Prolog programlarındaki izleme durumundan farklı değildir. Gerçekleri tanımlar ve daha sonra karar vermek için kullanırsınız. Oldukça eski, ancak Prolog'u Keşfetme: Maceralar, Nesneler, Hayvanlar ve Vergiler makalesi, bunun bir oyunda nasıl çalışabileceğini açıklamak için iyi bir iş çıkarıyor. Makaleden özetlendi:
% 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.
Bunun ötesinde bir grafik ve IO kütüphanesine ihtiyacınız var. Bunları içeren ticari Prolog dağıtımları olabilir. SWI Prolog'u en iyi biliyorum, bu yüzden başlangıç noktası olarak plOpenGL'yi önereceğim . Yalnızca OpenGL'nin oluşturma yeteneklerine erişim sağlamakla kalmaz, aynı zamanda fare ve klavye olayları için bağlamalar da içerir. Örneğin, Escape tuşuna bir kez basmak için aşağıdaki gibi bir klavye kuralı tanımlarsınız:
% 27 is ASCII Code for Escape
keyboard(27,_,_) :-
write('Escape key was pressed...'),nl.
Birkaç ayrıntı için plOpenGL'nin hareketli ışık örneğine ve fare hareketini ele alma örneğine bir göz atın .
Bir grafik kütüphanesi kullanırsanız, oyun döngüsünü sizin için halledecektir. Temel olarak, kontrolü kütüphaneye ters çevirir ve uygun olduğunda yürütülecek kuralları sağlarsınız: kurulum, yeniden boyama, IO olayları, vb. FPS'yi zamana bağlı olarak koşullu olarak sınırlamak veya kodu koşullu olarak çalıştırmak istiyorsanız, geçen zamanı saat / tarih kullanarak izleyebilirsiniz. yüklemleri buna göre yapmak kararları.
Birçok Prolog aroması var, bu yüzden bir oyun kurmanın tek yolu bu değil. Farklı dağıtımlar ve ilgili diller, farklı yaklaşımları teşvik edebilecek farklı kütüphaneler / ciltler kullanacaktır. Buna ek olarak, çok dilli programcılar, oyun varlığı davranışlarını ve karar vermeyi modellemek için Prolog'u kullanırken oluşturma ve IO'yu yönetmek için daha "grafik dostu" bir ana bilgisayar dili / çalışma zamanı kullanmanızı teşvik edebilir.