Add files via upload

This commit is contained in:
HarmandI 2021-10-01 15:58:19 +02:00 committed by GitHub
parent 8a2e205843
commit b1342d410b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 100 additions and 77 deletions

45
Morpion/src/README.txt Normal file
View File

@ -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 daligner 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 lun 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 limplé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 dutilisation :
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 dutilisation.
Je n'en ai pas pour le moment car mon code ne fonctionne pas, je dois le debugger et pour l'instant je coince.

View File

@ -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;
}
}
@ -87,70 +80,55 @@ public class Programme {
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");
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
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();}
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) {
}
}
//Mettre le bon caractere dans la case choisie
grid[cases-1]=joueurActuel;
// 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; }
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 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();
}
}
}}