Le jeu du morpion
Mercredi 12 et vendredi 14 octobre 2016
Vous réaliserez ce travail par groupe de trois étudiants (voir la page de dépôt de votre travail).
Commencez par ouvrir un document GoogleDoc et partagez le avec vos camarades et moi.
C'est dans ce document que vous allez rédiger le suivi de la construction de votre code en langage C.
Le principe est le suivant (dans le cas où vous ne savez pas jouer au morpion…) :
Source
Le jeu se situe sur une grille de 9 cases (3 cases de côté).
Chacun à son tour doit mettre un signe dans une des cases (par convention,
un joueur utilise le signe « O » et l’autre le signe « X »).
Celui qui gagne est celui qui sera arrivé à aligner 3 signes identiques
(en ligne, colonne ou diagonale).
Vous afficherez la grille après que chaque joueur ait joué :
Le programme devra afficher :
C'est au tour du joueur 1
Ligne : 2
Colonne : 3
Affichage du tableau avec l'état courant de la grille.
etc.
Pour pouvoir contrôler et rechercher si un des joueurs est gagnant, il faut mémoriser
les choix de chaque joueur dans un tableau à 2 dimensions (3x3) d’entiers, chaque case
contiendra 1 ou 2 (1 pour le joueur 1 et 2 pour le joueur 2). Il faut donc penser à remplir
ce tableau après chaque choix d’un joueur et, juste après l’avoir rempli, contrôler si trois
signes ne sont pas alignés (à vous de trouver comment faire ce contrôle !).
Ce tableau va permettre aussi d’ajouter un contrôle de saisie :
un joueur ne peut pas sélectionner une case déjà remplie.
Une fois le gagnant désigné, il suffit d’afficher un message du genre :
Le joueur 1 a gagné.
Faites un test final pour contrôler si le jeu fonctionne correctement.
Faites plusieurs tests : personne ne gagne, un des 2 joueurs gagne avec une ligne, une
colonne ou une diagonale.
Plusieurs tests sont nécessaires pour contrôler tous les cas possibles.
Contrôlez aussi qu’un joueur ne peut pas mettre un signe dans une case déjà remplie.
On vous demande de produire un code et un exécutable avec lequel on puisse « jouer ».
N'oubliez pas de commenter votre code et de détaillez l'ensemble dans votre document GoogleDoc.
Pour vous répartir le travail vous commencerez par écrire un algorithme en le décomposant en sous programmes.
Chacun d'entre vous sera responsable de la réalisation d'un ou plusieurs sous programmes.
Une fois ce travail réalisé vous viendrez me voir pour le valider et passer ainsi à la réalisation.
Votre groupe obtiendra une première note à cette occasion.
Compléments utiles
Pour définir un tableau de quatre entiers :
Comment accéder à chaque case du tableau ?
Il suffit d'écrire tableau[numeroDeLaCase].
En fait, si vous écrivez juste tableau, vous obtenez un pointeur.
C'est un pointeur sur la première case du tableau. Faites le test :
int tableau[4];
printf("%d", tableau);
Résultat, on voit l'adresse où se trouve tableau :
Extrait de openclassrooms.
Les tableaux multidimensionnels
int Tableau [3][4];
Initialisation d'un tableau 2x2
int i,j;
for (i=0; i<=2; i++){
}
Extrait de comment ça marche.
Proposition d'un algorithme général :
Afficher la grille du jeu (SP1)
Joueur = joueur N°1
Gagnant = 0
Blocage = 0
Tant que Gagnant = 0 et Blocage = 0
- Répéter
- Saisir ligne colonne (SP2)
- Jusqu'à ce que l'utilisateur ait le droit de jouer ligne, colonne (SP3)
- Jouer Ligne Colonne (SP4)
- Afficher la nouvelle grille du jeu (SP1)
- Vérifier qu'il y a un Gagnant (joueur courant) ou Blocage = 1(SP5)
- Changer de joueur (* -1)
Fin tant que