diff --git a/Morpion/bin/isaHarmand/morpion/Programme.class b/Morpion/bin/isaHarmand/morpion/Programme.class index 3be39fd..ad0d3b5 100644 Binary files a/Morpion/bin/isaHarmand/morpion/Programme.class and b/Morpion/bin/isaHarmand/morpion/Programme.class differ diff --git a/Morpion/src/README.txt b/Morpion/src/README.txt new file mode 100644 index 0000000..feb917e --- /dev/null +++ b/Morpion/src/README.txt @@ -0,0 +1,45 @@ +Morpion: + +Règles du jeu : + +Pour jouer une partie de morpion, il suffit placer dans une grille de 3 cases*3. + Le but du jeu est d’aligner avant son adversaire 3 symboles identiques horizontalement, verticalement ou en diagonale. +Chaque joueur a donc son propre symbole:soit X soit O. La partie se termine quand l’un des joueurs à aligner 3 symboles + ou quand la grille est complétée sans vainqueur. Il y a alors égalité. + +Comment gagner une partie de Morpion ? +Le premier joueur a aligner 3 symboles identiques gagne la partie. +Attention, le joueur qui débute est toujours avantagé pour gagner. +C'est pour cela que dans ce programme il y a un tirage au sort de celui qui débute la partie. + +- description de l’implémentation technique du jeu (algorithmes principaux, modeélisation): + +fonctions : + +monterLaGrille => Qui imprime la grille à l'écran +gagnant => qui imprime la grille gagnate et imprime une phrase pour dire qui a gagné +isGagnant => qui vérifie s'il y a un gagnant qui a aligné 3 symboles à l'horizontal, à la vertical ou en diagonale. + +Puis mon programme de jeu : +* il débute par le tirage au sort du joueur qui commence la partie. +* puis il y a une boucle do / while: + qui demande au joueur de choisir un numéro de case. + qui vérifie que la case est libre et la coche avec le symbol en cour (c'est là que mon programme bug la première fois) + puis vérification que ce tour de jeu soit gagnant, ou qu'il y a match null. + Si non, le jeu donne la main à l'autre joueur. + +la notice d’utilisation : + +Ce jeu se joue à 2 joueurs. +L'un a les X, l'autre les O. +Puis il faut suivre les indications de l'ordinateur. + +- un exemple d’utilisation. + +Je n'en ai pas pour le moment car mon code ne fonctionne pas, je dois le debugger et pour l'instant je coince. + + + + + + diff --git a/Morpion/src/isaHarmand/morpion/Programme.java b/Morpion/src/isaHarmand/morpion/Programme.java index eb8161b..2ab6edc 100644 --- a/Morpion/src/isaHarmand/morpion/Programme.java +++ b/Morpion/src/isaHarmand/morpion/Programme.java @@ -7,7 +7,7 @@ public class Programme { Boolean gagnant= false; - char cases; + int cases; char X='X'; char O='O'; Scanner scan=new Scanner(System.in); @@ -28,52 +28,45 @@ public class Programme { public void gagnant(char[]grid,char joueurActuel) { montrerLaGrille(grid); System.out.println("Le joueur qui a les "+joueurActuel+"a gagné!"); + System.exit(0); } 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){ + for(int i=0;i<3;++i){ + if (grid[i*3+0]==joueurActuel && grid[i*3+1]==joueurActuel && grid[i*3+2]==joueurActuel) 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; - } + for(int i=0;i<3;i++){ + if (grid[i]==joueurActuel && grid[i+3]==joueurActuel && grid[i+6]==joueurActuel) + 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) { + 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) { + for(int j=0;j<3;++j){ + if (grid[2]==joueurActuel && grid[4]==joueurActuel && grid[6]==joueurActuel) { gagnant(grid, joueurActuel); - break;}}} + break; + } + } + return gagnant; -} + } @@ -86,71 +79,56 @@ public class Programme { 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]); - System.out.println("Choisis une case libre entre 1 et 9"); + joueurActuel=nom[n]; + System.out.println("Le joueur qui joue est "+nom[n]); //imprimer la grille - montrerLaGrille(grid); + do{ + montrerLaGrille(grid); // le joueur 1 choisit une case : entre 1 et 9 et non cochée. // si caractere incorrect reposer la question - - - 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) - && (cases<=9) - && (grid[cases-1]!=X) - && (grid[cases-1]!=O)); - break; - }catch (Exception cases) { - } + + System.out.println(joueurActuel+ " choisis un numéro de case libre entre 1 et 9"); + String cocher=scan.nextLine(); + try { + cases =Integer.parseInt(cocher); + if ((1<=cases) && (cases<=9) && (grid[cases-1]!=X) && (grid[cases-1]!=O)); + break; + }catch (Exception cases){cases.printStackTrace();} - } //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; + } + + + - - // 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; } - - - - } - // si non demander à l'autre joueur de choisir une case libre - if(joueurActuel==X) - joueurActuel=O; - else - {joueurActuel=X; - } - - - - // veux tu rejouer? - //si oui on redemarre une partie - //si non Au revoir - scanner.close(); - } }} + + /** * Main */ public static void main(String[] args) { /**TODO Auto-generated method stub*/ Programme morpion=new Programme(); - } + }} -} +