153 lines
3.5 KiB
Java
153 lines
3.5 KiB
Java
|
package isaHarmand.morpion;
|
||
|
|
||
|
import java.util.Random;
|
||
|
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]+']');
|
||
|
System.out.println("["+ grid[6]+'|'+grid[7]+'|'+grid[8]+']');
|
||
|
}
|
||
|
|
||
|
public void gagnant(char[]grid,char joueurActuel) {
|
||
|
montrerLaGrille(grid);
|
||
|
System.out.println("Le joueur qui a les "+joueurActuel+"a gagné!");
|
||
|
}
|
||
|
|
||
|
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;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
public Programme() {
|
||
|
|
||
|
|
||
|
// début du jeu
|
||
|
|
||
|
// tirer au hazard quel joueur commence
|
||
|
char nom[]= {this.O,this.X};
|
||
|
Random tirage=new Random();
|
||
|
int n=tirage.nextInt(nom.length);
|
||
|
joueurActuel=nom[n];
|
||
|
System.out.println("Le joueur qui commence est "+nom[n]);
|
||
|
|
||
|
//imprimer la grille
|
||
|
|
||
|
do{
|
||
|
montrerLaGrille(grid);
|
||
|
// le joueur 1 choisit une case : entre 1 et 9 et non cochée.
|
||
|
// si caractere incorrect reposer la question
|
||
|
|
||
|
System.out.print(joueurActuel+ " choisis un numéro de case libre entre 1 et 9");
|
||
|
String cocher=scan.nextLine();
|
||
|
try {
|
||
|
cases =(char) Integer.parseInt(cocher);
|
||
|
if ((1<=cases)
|
||
|
&& (cases<=9)
|
||
|
&& (grid[cases-1]!=X)
|
||
|
&& (grid[cases-1]!=O));
|
||
|
break;
|
||
|
}catch (Exception cases){}
|
||
|
|
||
|
//Mettre le bon caractere dans la case choisie
|
||
|
grid[cases-1]=joueurActuel;
|
||
|
isGagnant();
|
||
|
// 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)
|
||
|
System.out.println("Match nul!!");
|
||
|
break;
|
||
|
}
|
||
|
}while(gagnant=false);// si non demander à l'autre joueur de choisir une case libre
|
||
|
if(joueurActuel==X)
|
||
|
joueurActuel=O;
|
||
|
else
|
||
|
joueurActuel=X;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
scanner.close();
|
||
|
|
||
|
/**
|
||
|
* Main
|
||
|
*/
|
||
|
public static void main(String[] args) {
|
||
|
/**TODO Auto-generated method stub*/
|
||
|
Programme morpion=new Programme();
|
||
|
}}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|