// Ce programme implémente le jeu X-O. // Demande l’usager de jouer (c’est possible de jouer plusieurs fois) // Un tableau de jeu est affiché et chaque joueur peut placer X ou O // Quand un gagnant ou match nul est détecté, le program affiche un // message et demande l’usager s’il veut commencer un autre jeu. class D4Q2TTT { /* * Methode: main * * controle le jeu: la boucle extérieure pour commencer un autre jeu * la boucle intérieure pour les étapes de même jeu. */ public static void main (String[] args) { // DECLARE DES VARIABLES char [] [] tableau; // reference au tableau de jeu char [] reponse; // reponse de l’usager boolean gagnant; // true quand il y a un gagnant // Créer le tableau de jeu tableau = new char[3][3]; // la seule matrice utilise dans le programme. System.out.println ("Voulez-vous commencer une nouvelle partie (O ou N):"); reponse = ITI1520.readCharLine(); while ( (reponse[0] == 'o') || (reponse[0] == 'O') ) { D4Q2Lib.effaceTableau(tableau); // prepare le tableau de jeu gagnant = false; // initialise la variable gagnant while(!gagnant) { afficheTableau(tableau); // affiche le tableau de jeu joue(tableau,'X'); // demande joueur X de jouer gagnant = D4Q2Lib.verifieQuiAGagne(tableau); // il a gagne? if(!gagnant) { // pas de gagnant, l’autre joueur peut jouer afficheTableau(tableau); // affiche le tableau joue(tableau,'O'); // demande joueur O de jouer gagnant = D4Q2Lib.verifieQuiAGagne(tableau); // il a gagne? } } afficheTableau(tableau); // affiche le résultat du jeu System.out.println ("Voulez-vous commencer une nouvelle partie (O ou N):"); reponse = ITI1520.readCharLine(); } } /* * METHODE: void afficheTableau(char [][]) * affiche le tableau de jeu * * DONNEE: char [][] tab: une référence a une matrice 3X3 qui contient '-', 'X' ou 'O' * * Le format est: * 0 1 2 * 0 - - O * 1 - X - * 2 - - X */ public static void afficheTableau ( char [] [] tab) { // DECLARE DES VARIABLES int l; // index pour les lignes int c; // index pour les colonnes // MODULE DE L’ALGORITHME System.out.println(" 0 1 2"); for(l = 0 ; l < tab.length ; l++) { System.out.print(l); for(c = 0 ; c < tab[l].length ; c++) { System.out.print(" " + tab[l][c]); } System.out.println(); } } /* * METHODE: void joue(char [][] tab, char joueur) * * Cette méthode joue une étape de jeu * * DONNEE: char [][] tab: une référence a une matrice 3X3 * char joueur: X ou O pour indiquer qui joue * MODIFIEE: tab (un élément de la matrice est changé) * */ public static void joue ( char [] [] tab, char joueur) { // DECLARE DES VARIABLES int [] place; // variable reference, pour la position l and c, dans un tableau de 2 elements // MODULE DE L’ALGORITHME do // trouve une position qui n’est pas occupée, qui contient '-‘ { do // prends de valeurs valides pour l et c { System.out.println ("Joueur " + joueur + ", SVP SVP indiquez une ligne et une colonne de 0 a 2: "); place = ITI1520.readIntLine(); // créer un tableau avec deux éléments } while( place.length != 2 || // quand ce test est faux, les autre testes // ne sont pas exécutés ! ((0 <= place[0]) && (place[0] <= 2)) || ! ((0 <= place[1]) && (place[1] <= 2)) ); if(tab[place[0]][place[1]] != '-') { System.out.println("La position " + place[0] + " " + place[1] + " est occupee"); } } while(tab[place[0]][place[1]] != '-'); // met le joueur dans la matrice // tab[place[0]][place[1]] = joueur ; // pas de resultat } }