R1.01 – PROG#10 – EXERCICE 3

Le jeu

Initialisation de la grille

Ecrire la fonction initMat () de signature :

void initMat (CMatrix & Mat, unsigned nbLine, unsigned nbColumn, CPosition & posPlayer1, CPosition & posPlayer2)

Cette fonction a pour but d’initialiser toutes les cases de la grille avec le caractère ' ' ainsi que de mettre le jeton du Joueur1 en haut à droite et celui du Joueur2 en bas à gauche.

Placement d’un jeton au bon endroit

Ecrire la fonction moveToken () de signature :

void moveToken (CMatrix & Mat, char move, CPosition  & pos)

Cette fonction déplace, dans la grille, le jeton situé initialement à la position pos en fonction de la valeur du caractère move, puis met à jour la position.

Cette fonction place le jeton 'X' s’il s’agit du premier joueur (ou 'O' s’il s’agit du second, selon la valeur du caractère move)
au bon endroit (indiqué par pos) dans la matrice représentant la grille. La position pos est aussi changée.

L’algorithme principal

Le but de cette partie est d’écrire la fonction ppal () (fonction qui nous sert de programme principal) qui gère la partie. Cette fonction a pour signature :

int ppal ()

Dans le main (), vous devez uniquement appeler cette fonction. Cette fonction :

  1. initialise la matrice (grille) du jeu ainsi que le nombre de coup maximal;
  2. affiche la grille;
  3. entre dans une boucle tant qu’on peut jouer et qu’il n’y a pas de victoire;
    1. saisit le caractère correspondant à un déplacement;
    2. place le pion au bon endroit.
      Attention, aucun contrôle quant à la possibilité d’effectuer le déplacement de la grille n’est effectué.
    3. affiche la grille;
    4. effectue le test ;
  4. teste dans quel(s) état(s) on est sorti de boucle (s’il y a eu une victoire ou un match nul) et affiche les informations en conséquence.

Précision sur l’instruction “tant qu’on peut jouer” et conséquences

Puisque la grille contient M*M cases, il arrive fréquemment qu’aucun des joueurs ne prenne le dessus sur son adversaire. En conséquence, il faut limiter le nombre de mouvements des 2 joueurs.