Projet : Ane rouge

règle du jeu

L'âne rouge est un taquin. Dans une boite rectangulaire 4x5, il y a dix pièces posées les unes à côté des autres qui peuvent glisser. Les quatre pièces notées i, j, k et l dans l'exemple de partie, sont des petits carrés 1x1. Les quatre pièces notées V, W, X et Y sont des rectangles verticaux 1x2. La pièce notée H est un rectangle horizontal 2x1. La pièce notée A est un gros carré 2x2 sur lequel est normalement dessiné un âne rouge. Il reste deux petits carrés libres qui permettent de faire glisser les pièces. Dans la position initiale l'âne rouge se trouve en haut de la boîte, au milieu. Le but du jeu est de l'amener en bas au milieu.
Vous pouvez trouver ici un exemple de partie gagnée en 115 mouvements élémentaires. La ligne 110 A> indique que le 110ème mouvement était un déplacement à droite de l'âne rouge.
Vous pouvez trouver un (trop) bel exemple de ce que vous devez réaliser. Voici enfin un exemple simple en pascal.

programme à écrire

Vous devez écrire un programme en pascal qui vous permet de jouer à l'âne rouge. Il affiche le jeu sur l'écran, par exemple sous la forme
W A A V
W A A V
. H H .
X i j Y
X k l Y
Puis il vous demande quelle pièce vous déplacez et dans quelle direction. Par exemple, vous pouvez tapez Y^ pour indiquer que vous voulez déplacer la pièce Y vers le haut. Il réaffiche alors le jeu
W A A V
W A A V
. H H Y
X i j Y
X k l .
et attend que vous tapiez un autre déplacement.
Le programme devra aussi compter les mouvements faits. Au lieu de taper un déplacement, vous devez pouvoir tapez la touche Q pour arrêter le programme, ou la touche échapement pour revenir à la position initiale, ou la touche U pour défaire le dernier mouvement fait. Vous devez pouvoir taper autant de U que vous voulez, et revenir ainsi éventuellement jusqu'au début de la partie. Enfin vous devez écrire la suite des déplacements effectués dans un fichier de texte, dont le nom peut être demandé au joueur.

soutenance

Le projet doit être fait individuellement ou par groupe de deux. Il doit être rendu pendant le TD le 25 ou le 26 mai 2005. Il faut alors prendre un rendez-vous pour la soutenance qui aura lieu dans la semaine suivante.