diff --git a/Morpion/bin/isaHarmand/morpion/Joueur.class b/Morpion/bin/isaHarmand/morpion/Joueur.class new file mode 100644 index 0000000..eeea00e Binary files /dev/null and b/Morpion/bin/isaHarmand/morpion/Joueur.class differ diff --git a/Morpion/bin/isaHarmand/morpion/Programme.class b/Morpion/bin/isaHarmand/morpion/Programme.class index 88ed91c..3be39fd 100644 Binary files a/Morpion/bin/isaHarmand/morpion/Programme.class and b/Morpion/bin/isaHarmand/morpion/Programme.class differ diff --git a/Morpion/src/isaHarmand/morpion/Joueur.java b/Morpion/src/isaHarmand/morpion/Joueur.java new file mode 100644 index 0000000..44ccc1d --- /dev/null +++ b/Morpion/src/isaHarmand/morpion/Joueur.java @@ -0,0 +1,5 @@ +package isaHarmand.morpion; + +public class Joueur { + +} diff --git a/Morpion/src/isaHarmand/morpion/Programme.java b/Morpion/src/isaHarmand/morpion/Programme.java index ef28e95..eb8161b 100644 --- a/Morpion/src/isaHarmand/morpion/Programme.java +++ b/Morpion/src/isaHarmand/morpion/Programme.java @@ -5,6 +5,20 @@ import java.util.Scanner; public class Programme { + + Boolean gagnant= false; + char cases; + char X='X'; + char O='O'; + Scanner scan=new Scanner(System.in); + char joueurActuel; + //Dessiner une grille + char[]grid= + {'1','2','3', + '4','5','6', + '7','8','9', + }; + public void montrerLaGrille(char[]grid) { System.out.println("["+ grid[0]+'|'+grid[1]+'|'+grid[2]+']'); System.out.println("["+ grid[3]+'|'+grid[4]+'|'+grid[5]+']'); @@ -16,46 +30,65 @@ public class Programme { System.out.println("Le joueur qui a les "+joueurActuel+"a gagné!"); } - Scanner scan=new Scanner(System.in); - char joueurActuel; + public boolean isGagnant () { + //Vérifier s'il y a 3 elements alignés en vertical horizontal ou diagonale + //On verifie les lignes + for(int i=0;i<3;++i){ + if (grid[i*3+0]==joueurActuel + && grid[i*3+1]==joueurActuel + && grid[i*3+2]==joueurActuel) + gagnant=true; + } + if (gagnant){ + gagnant(grid, joueurActuel); + break; + } + + //on verifie les colonnes + for(int i=0;i<3;++i){ + if (grid[i]==joueurActuel + && grid[i+3]==joueurActuel + && grid[i+6]==joueurActuel) + gagnant=true; + } + if (gagnant){ + gagnant(grid, joueurActuel); + break; + } + + //on verifie 1ere diagonale + for(int i=0;i<3;++i){ + if (grid[0]==joueurActuel + && grid[4]==joueurActuel + && grid[8]==joueurActuel) { + gagnant(grid, joueurActuel); + break; + } + + //on verifie 2eme diagonale + for(int j=0;j<3;++j){ + if (grid[2]==joueurActuel + && grid[4]==joueurActuel + && grid[6]==joueurActuel) { + gagnant(grid, joueurActuel); + break;}}} + return gagnant; +} - String joueur1; - String joueur2; - Boolean gagnant= false; - char cases; - char X; - char O; - //Dessiner une grille - char[]grid= - {'1','2','3', - '4','5','6', - '7','8','9', - }; - - //Saisir les noms des 2 joueurs - public Programme() { - joueur1= joueur(); - joueur2=joueur(); + public Programme() { + // début du jeu - public String joueur(){ - System.out.println("Quel est ton pseudo?"); - Scanner scanner=new Scanner(System.in); - return scanner.next(); - System.out.println("Bonjour "+joueur1 +" et "+ joueur2+"!"); - // tirer au hazard quel joueur commence - String nom[]= {joueur1,joueur2}; + char nom[]= {this.O,this.X}; Random tirage=new Random(); int n=tirage.nextInt(nom.length); - joueur1=nom[n]; - joueurActuel=X; - + joueurActuel=nom[n]; + System.out.println("Le joueur qui commence est "+nom[n]); - System.out.println("Tu joues avec les X"); System.out.println("Choisis une case libre entre 1 et 9"); //imprimer la grille @@ -65,9 +98,10 @@ public class Programme { // si caractere incorrect reposer la question - while (true) { + while (!this.isGagnant()) { System.out.print(joueurActuel+ " choisis un numéro de case libre entre 1 et 9"); String cocher=scan.nextLine(); + //do while try { cases =(char) Integer.parseInt(cocher); if ((1<=cases) @@ -82,48 +116,7 @@ public class Programme { //Mettre le bon caractere dans la case choisie grid[cases-1]=joueurActuel; - //Vérifier s'il y a 3 elements alignés en vertical horizontal ou diagonale - //On verifie les lignes - for(int i=0;i<3;++i){ - if (grid[i*3+0]==joueurActuel - && grid[i*3+1]==joueurActuel - && grid[i*3+2]==joueurActuel) - gagnant=true; - } - if (gagnant){ - gagnant(grid, joueurActuel); - break; - } - - //on verifie les colonnes - for(int i=0;i<3;++i){ - if (grid[i]==joueurActuel - && grid[i+3]==joueurActuel - && grid[i+6]==joueurActuel) - gagnant=true; - } - if (gagnant){ - gagnant(grid, joueurActuel); - break; - } - - //on verifie 1ere diagonale - for(int i=0;i<3;++i){ - if (grid[0]==joueurActuel - && grid[4]==joueurActuel - && grid[8]==joueurActuel) { - gagnant(grid, joueurActuel); - break; - } - - //on verifie 2eme diagonale - for(int j=0;j<3;++j){ - if (grid[2]==joueurActuel - && grid[4]==joueurActuel - && grid[6]==joueurActuel) { - gagnant(grid, joueurActuel); - break; - } + // si toutes les cases sont pleines et qu'iln'y a pas 3 pions d'alligné match nul for (int k=0;k<9;++k){ if (grid[k]==X || grid[k]==O)