Jeu de Reversi

Jeu de Reversi

Vous devez implémenter un jeu de Reversi utilisable de deux façons: 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: L'ordinateur joue à sont tour immédiatement.

Condition de fin de partie

La partie est terminée lorsque:

A la fin d'une partie, l'utilisateur décide d'arrêter de jouer, ou de recommencer une nouvelle partie.

Interface (à respecter absolument)Updated

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:
  1. La représentation des structures de données.
  2. La description des principales procédures.
  3. Le manuel d'utilisation
  4. Un jeu de tests boîte de verre (1 page).
  5. Le listing du programme (celui-ci étant bien indenté et commenté).
  6. Le listing des jeux de tests.
  7. 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 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