Jeu de Reversi
Vous devez implémenter un jeu de Reversi utilisable de deux façons:
- Un utilisateur joue contre l'ordinateur qui joue aussi bien que
possible (jouer au hasard est une stratégie possible !)
- Deux utilisateurs s'affrontent.
Dans les deux cas, le programme doit vérifier qu'il n'y a pas de
triche.
Voici l'environnement du jeu:
Le damier est de dimension 8 × 8, toutes les cases sont de la
même couleur. Au début, les quatres cases centrales sont occupées par
2 pions noirs et 2 pions blancs en diagonale:
Les noirs commencent.
Voici les coups permis:
Il faut avoir pion de sa couleur suivi d'une série de pions de la
couleur de l'adversaire et d'une case vide. On peut alors poser une
pièce de sa couleur dans la case vide. Par exemple, voici les premiers
coups jouables:
Alors toutes les pièces de
l'adversaire entourées par ses pièces et la nouvelle, passe à sa
propre couleur, par exemple après avoir joué (3,5):
Déroulement de la partie
Le programme décide de vous attribuer les NOIRS ou les BLANCS. Le
damier s'affiche sur l'écran, le camp de l'utilisateur en bas du
damier. Autour du damier (à gauche et en haut) apparaîssent les
numéros de lignes (1..8) et de colonnes (1..8).
Chacun joue à tour de rôle.
Lorsqu'arrive le tour de l'utilisateur, deux situations peuvent se
présenter:
- Le jeu est bloqué pour l'utilisateur, il ne peut rien faire. Le
programme indique qu'il y a un blocage et passe au coup suivant.
- L'utilisateur peut jouer. Il entre la position de la case jouée
dans l'ordre (ligne, colonne). Le programme doit vérifier que le coup
est possible (sinon, l'utilisateur rejoue), l'exécuter pui afficher le
damier mis à jour.
L'ordinateur joue à sont tour immédiatement.
Condition de fin de partie
La partie est terminée lorsque:
-
plus aucun des deux joueurs ne peut
jouer.
- L'utilisateur décide d'interrompre la partie en cours: au moment
de jouer, il entre 00.
A la fin d'une partie, l'utilisateur décide d'arrêter de jouer, ou de
recommencer une nouvelle partie.
Interface (à respecter absolument)
Au début on entre deux lettres, soit 'o' soit 'h', pour déterminer si
le premier et le deuxième joueur (respectivement) sont un humain
(coups entrés au clavier) ou un ordinateur. Les lettres doivent être
séparés par un espace. Rappelons que toutes les lignes qui ne sont
pas des coups doivent etre prefixées par >. Ces lignes peuvent
contenir n'importe quoi. Les coups joués par l'ordinateur doivent être
sur une seule ligne, séparé par un espace.
Entrée: x1 y1.
Le pion est joué en x1, colonne
y1.
Voici quelques exemples de session:
Exemple 1: deux humains, l'ordinateur regarde.
>Entrez le type de partie: h h
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . . . . . . .
> 4 . . . X O . . .
> 5 . . . O X . . .
> 6 . . . . . . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
>
>Entrez le coup pour O: 3 4
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . . O . . . .
> 4 . . . O O . . .
> 5 . . . O X . . .
> 6 . . . . . . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
>
>Entrez le coup pour X: 3 3
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . X O . . . .
> 4 . . . X O . . .
> 5 . . . O X . . .
> 6 . . . . . . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
>
>Entrez le coup pour O: 6 5
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . X O . . . .
> 4 . . . X O . . .
> 5 . . . O O . . .
> 6 . . . . O . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
Exemple 2: Le premier joueur est humain, le second est un ordinateur.
>Entrez le type de partie: h o
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . . . . . . .
> 4 . . . X O . . .
> 5 . . . O X . . .
> 6 . . . . . . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
>
>Entrez le coup pour O: 3 4
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . . O . . . .
> 4 . . . O O . . .
> 5 . . . O X . . .
> 6 . . . . . . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
>
3 3
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . X O . . . .
> 4 . . . X O . . .
> 5 . . . O X . . .
> 6 . . . . . . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
>
>Entrez le coup pour O: 6 5
> 1 2 3 4 5 6 7 8
> _______________
> 1 . . . . . . . .
> 2 . . . . . . . .
> 3 . . X O . . . .
> 4 . . . X O . . .
> 5 . . . O O . . .
> 6 . . . . O . . .
> 7 . . . . . . . .
> 8 . . . . . . . .
> ---------------
Ce que vous devez remettre:
Le travail est individuel. Les dates de remis sont fermes;
après ces dates 2 points seront retirés par jour de retard. Vous devez
remettre un dossier non manuscrit qui comprendra:
- La représentation des structures de données.
- La description des principales procédures.
- Le manuel d'utilisation
- Un jeu de tests boîte de verre (1 page).
- Le listing du programme (celui-ci étant bien indenté et
commenté).
- Le listing des jeux de tests.
- Un mail du programme.
Rappelons que les programmes doivent être capable de jouer les uns
contre les autres (et donc d'afficher dans le format d'entrée le coup
joué). Un tournoi sera organisé, avec des points de bonus au vainqueur
!
En dehors des listings, le dossier ne doit pas comporter plus de 5
pages (le reste ne sera pas corrigé). Le travail est à remettre en
deux parties:
- Une première partie est à remettre le ???
à 9h. Elle comprend les points 1, 2 et 4. Une présentation orale
comptant pour un quart de la note aura lieu.
- Le dossier complet est à remettre au plus tard le Dimanche 15 Décembre
avant minuit. Une soutenance aura lieu dans la semaine du 16 au
20.
Une deuxième partie sera à rendre vers le 20 Janvier (listes chaînées
et procédures récursives). Les détails vous seront communiqués
ultérieurement.
Amusez-vous avec le Web
Vous pouvez trouvez sur le Web (in English, natürlich) Les
règles complètes du jeu sur le Guide du jeu d'Othello, et plusieurs sites vous permettant de
jouer: en Hollande,
aux U.S., une
version en
Allemagne et en Java. Encore un autre ici.
Christophe Tronche, ch@tronche.com