Le jeu Blokus est un jeu à 4 joueurs dans lequel chaque joueur dispose d'un ensemble de pièces à placer sur une grille 20x20, avec la condition que deux pièces appartenant à un joueur donné ne puissent se toucher que par un ou plusieurs coins. Les pièces du jeu classique sont les suivantes (Source image : Wikipedia) :
Le but du projet consiste à permettre de modéliser le jeu, calculer les coups possibles, pour à terme vérifier la correction d'une partie, voire construire une stratégie pour permettre de jouer contre l'ordinateur.
Un des aspects de ce projet consiste à mettre en valeur la
programmation fonctionnelle. Il est donc demandé d'éviter au
maximum le style impératif et les effets de bord, et de les
remplacer quand c'est possible par un équivalent fonctionnel.
Il est possible d'utiliser des bibliothèques codées en Lisp
pour faciliter certaines parties de la programmation. Pour
cela, il est recommandé d'installer un gestionnaire de
paquetages
nommé QuickLisp. La
procédure d'installation de ce gestionnaire est expliquée de
manière très claire à partir
du lien
suivant.
Pour installer une bibliothèque externe, comme par exemple la
bibliothèque McClim
pour les interfaces graphiques, il suffit alors de définir un
nouveau paquetage :
Il devient alors possible de tester des exemples
comme celui-ci.
(ql:quickload "mcclim") ;; Load the package (defpackage :project (:use :common-lisp :clim) (:shadowing-import-from :common-lisp :interactive-stream-p)) ;; Create another package without conflicts (in-package :project)
Recommandations :
Le fichier
suivant contient une liste de recommandations explicites
pour la réalisation de la partie algorithmique du projet. En
particulier, vos propos seront illustrés d'exemples dessinés et
commentés. Le rapport sera rédigé à l'aide
de
Latex. Les dessins pourront être réalisés à
l'aide de bibliothèques pour LaTeX
(comme pstricks ou tikz), ou de
logiciels de dessin (comme xfig).