Available nodes

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 :

(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)
Il devient alors possible de tester des exemples comme celui-ci.
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).