PROLOG est un langage de programmation qui a été créé vers 1972 par Alain Colmerauer et Philippe Roussel. Il s'agit d'un des principaux langages de programmation logique avec Oz et Python PyPy.
La programmation logique a pour but d'utiliser l'expressivité de la logique contrairement à la programmation classique qui définit une séquence d'instructions que l'ordinateur doit exécuter afin d'effectuer une tâche. La programmation logique définit des faits et des règles qui sont exploités par un démonstrateur de théorème ou un moteur d'inférence. La programmation logique est considérée comme une programmation déclarative et est l'un des principaux outils utilisés en Intelligence Artificielle.
Durant ma 2e année à l'école d'ingénieurs Sup Galilée, j'ai du réaliser avec mon binôme (Yohann Girard) un jeu d'Othello d'une taille de 6x6 en PROLOG. Nous avons tout d'abord du créer un joueur aléatoire capable d'analyser une grille de jeu et d'en déduire la liste des coups admissibles pour le joueur courant. Ensuite, nous avons créé un joueur intelligent capable de raisonner sur des plateaux de jeu et de choisir le meilleur coup à jouer selon une certaine stratégie. Au terme de ce projet, un tournoi s'est déroulé afin de déterminer la puissance des heuristiques de jeu établies par les différents binômes. Sur un total de 9 groupes, seuls 3 groupes (nous y compris) ont livré un programme de jeu interfacé avec le programme arbitre qui nous avait été fourni. Au final, nous avons donc effectué 4 matches (2 contre chaque binôme présent) et avons remporté le tournoi sans connaître la défaite.
Pour plus d'informations sur ce projet, vous pouvez consulter le rapport ainsi que le code source. Une archive téléchargeable contenant le programme arbitre + les joueurs interfacés vous permettra de tester notre rendu.
Pour lancer une partie, vous devez utiliser SWI-PROLOG, modifier les chemins d'accès aux fichiers des joueurs dans le fichier binomes.pl, charger le programme narbitre.pl dans PROLOG puis lancer le prédicat launch/0. Une fois le prédicat appelé, il vous demande les joueurs que vous souhaitez faire s'affronter. Entre un chiffre entre 1 et 3 sachant que le 1 correspond au joueur que nous avons présenté au tournoi, le 2 au joueur aléatoire et le 3 à notre joueur intelligent avec une profondeur plus élevée.