IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Morpion en c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 95
    Par défaut Morpion en c++
    Bonjour,
    J'essaye de faire en morpion en c++ mais quand j'exécute le programme, il est impossible de gagner la partie malgré le conditions que j'ai mises. J'ai beau aligner mes trois caractère, rien y fait.
    Je vous donne donc mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #include <iostream>
    using namespace std;
     
    void initialiseGrille(char grille[3][3])
    {
         int i, j;
         for (i=0; i<3; i++) {
                              for (j=0; j<3; j++) {
                                                   grille[i][j] ='_';
                                                   }
                              }
    }
     
    void affichegrille(char grille[3][3])
    {
         int i,j;
         for (i=0; i<3; i++) {
                              for (j=0; j<3; j++) {
                                                   cout<<grille[i][j]<<" ";
                                                   }
                              cout<<endl;
                              }
     
    }
     
    void metUnPionSurLaGrille(char grille[3][3], char&prochain_joueur)
    {
         int ligne, colonne;
         cout<<"Quelle ligne ?"<<endl;
         cin>>ligne;
         cout<<"Quelle colonne ?"<<endl;
         cin>>colonne;
         while((grille[ligne-1][colonne-1]) != '_'){
                                                cout<<"Saisie eronnee"<<endl;
                                                cout<<"Quelle ligne ?"<<endl;
                                                cin>>ligne;
                                                cout<<"Quelle colonne ?"<<endl;
                                                cin>>colonne;
                                                }          
         grille[ligne-1][colonne-1]=prochain_joueur;
         if (prochain_joueur == 'O'){
                                    prochain_joueur = 'X';
                                    }
         else{
              prochain_joueur = 'O';
              }
    }
     
    int testeFinJeu(char T[3][3], char prochain_jeu)
    {
            char a;
            a='_';
            if ((T[1][1]==T[2][1])&&(T[3][1]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][2]==T[2][2])&&(T[3][2]==T[1][2])&&(T[1][2]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][3]==T[2][3])&&(T[3][3]==T[1][3])&&(T[1][3]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][1]==T[1][2])&&(T[1][3]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[2][1]==T[2][2])&&(T[2][3]==T[2][1])&&(T[2][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[3][1]==T[3][2])&&(T[3][3]==T[3][1])&&(T[3][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][1]==T[2][2])&&(T[3][3]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[3][1]==T[2][2])&&(T[1][3]==T[2][2])&&(T[2][2]==prochain_jeu)){
                                                                    return 1;
                                                                    }
     
            else {
                 return 0;
                 }
    }
     
    int main (void)
    {
        char grille[3][3];
        int b, i;
        char prochainjoueur;
        prochainjoueur='O';
        initialiseGrille(grille);
        b=testeFinJeu(grille, prochainjoueur);
        while(b==0){
                    for(i=1;i<=9;i++){    
                                      affichegrille(grille);
                                      metUnPionSurLaGrille(grille, prochainjoueur);
                                      b=testeFinJeu(grille, prochainjoueur);
                                      }
                    b=1;
                    }
        affichegrille(grille);
        cout<<"Partie finie"<<endl;
        system("PAUSE");
        return 0;
    }
    Merci de votre aide

  2. #2
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Salut,

    Ca doit venir du faite que ton test quand tu regardes si tu as gagné.

    Tu dois changer le camp du 'prochain joueur' après avoir vérifier si le joueur a gagner ou non et non avant.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 95
    Par défaut
    Rebonjour,
    j'ai résolu une partie du problème, mais maintenant quand une personne gagne, il faut attendre le coup suivant pour que la partie soit annoncée comme finie. Voila mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    #include <iostream>
    using namespace std;
     
    void initialiseGrille(char grille[3][3])
    {
         int i, j;
         for (i=0; i<3; i++) {
                              for (j=0; j<3; j++) {
                                                   grille[i][j] ='_';
                                                   }
                              }
    }
     
    void affichegrille(char grille[3][3])
    {
         int i,j;
         for (i=0; i<3; i++) {
                              for (j=0; j<3; j++) {
                                                   cout<<grille[i][j]<<" ";
                                                   }
                              cout<<endl;
                              }
     
    }
     
    void metUnPionSurLaGrille(char grille[3][3], char&prochain_joueur)
    {
         int ligne, colonne;
         cout<<"Quelle ligne ?"<<endl;
         cin>>ligne;
         cout<<"Quelle colonne ?"<<endl;
         cin>>colonne;
         while((grille[ligne-1][colonne-1]) != '_'){
                                                cout<<"Saisie eronnee"<<endl;
                                                cout<<"Quelle ligne ?"<<endl;
                                                cin>>ligne;
                                                cout<<"Quelle colonne ?"<<endl;
                                                cin>>colonne;
                                                }          
         grille[ligne-1][colonne-1]=prochain_joueur;
         if (prochain_joueur == 'O'){
                                    prochain_joueur = 'X';
                                    }
         else{
              prochain_joueur = 'O';
              }
    }
     
    int testeFinJeu(char T[3][3], char prochain_jeu)
    {
            if ((T[1][1]==T[2][1])&&(T[0][1]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][2]==T[2][2])&&(T[0][2]==T[1][2])&&(T[1][2]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][0]==T[2][0])&&(T[0][0]==T[1][0])&&(T[1][0]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][1]==T[1][2])&&(T[1][0]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[2][1]==T[2][2])&&(T[2][0]==T[2][1])&&(T[2][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[0][1]==T[0][2])&&(T[0][0]==T[0][1])&&(T[0][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][1]==T[2][2])&&(T[0][0]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[0][1]==T[2][2])&&(T[1][0]==T[2][2])&&(T[2][2]==prochain_jeu)){
                                                                    return 1;
                                                                    }
     
            else {
                 return 0;
                 }
    }
     
    int main (void)
    {
        char grille[3][3];
        int b, i, a;
        char prochainjoueur;
        prochainjoueur='O';
        initialiseGrille(grille);
        b=testeFinJeu(grille, prochainjoueur);
        while(b==0){
                    affichegrille(grille);
                    metUnPionSurLaGrille(grille, prochainjoueur);
                    b=testeFinJeu(grille, prochainjoueur);
                    }
        affichegrille(grille);
        cout<<"Partie finie"<<endl;
        system("PAUSE");
        return 0;
    }

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Avec cette modification ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    #include <iostream>
    using namespace std;
     
    void initialiseGrille(char grille[3][3])
    {
         int i, j;
         for (i=0; i<3; i++) {
                              for (j=0; j<3; j++) {
                                                   grille[i][j] ='_';
                                                   }
                              }
    }
     
    void affichegrille(char grille[3][3])
    {
         int i,j;
         for (i=0; i<3; i++) {
                              for (j=0; j<3; j++) {
                                                   cout<<grille[i][j]<<" ";
                                                   }
                              cout<<endl;
                              }
     
    }
     
    void metUnPionSurLaGrille(char grille[3][3], char prochain_joueur)
    {
         int ligne, colonne;
         cout<<"Quelle ligne ?"<<endl;
         cin>>ligne;
         cout<<"Quelle colonne ?"<<endl;
         cin>>colonne;
         while((grille[ligne-1][colonne-1]) != '_'){
                                                cout<<"Saisie eronnee"<<endl;
                                                cout<<"Quelle ligne ?"<<endl;
                                                cin>>ligne;
                                                cout<<"Quelle colonne ?"<<endl;
                                                cin>>colonne;
                                                }          
         grille[ligne-1][colonne-1]=prochain_joueur;
    }
     
    void Joueur_Suivant(& char joueur)
    {
         if joueur == 'O'){
                                    joueur = 'X';
                               }
         else{
              joueur = 'O';
              }
    }
     
    int testeFinJeu(char T[3][3], char prochain_jeu)
    {
            if ((T[1][1]==T[2][1])&&(T[0][1]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][2]==T[2][2])&&(T[0][2]==T[1][2])&&(T[1][2]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][0]==T[2][0])&&(T[0][0]==T[1][0])&&(T[1][0]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][1]==T[1][2])&&(T[1][0]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[2][1]==T[2][2])&&(T[2][0]==T[2][1])&&(T[2][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[0][1]==T[0][2])&&(T[0][0]==T[0][1])&&(T[0][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[1][1]==T[2][2])&&(T[0][0]==T[1][1])&&(T[1][1]==prochain_jeu)){
                                                                    return 1;
                                                                    }
            if ((T[0][1]==T[2][2])&&(T[1][0]==T[2][2])&&(T[2][2]==prochain_jeu)){
                                                                    return 1;
                                                                    }
     
            else {
                 return 0;
                 }
    }
     
    int main (void)
    {
        char grille[3][3];
        int b, i, a;
        char prochainjoueur;
        prochainjoueur='O';
        initialiseGrille(grille);
        b=testeFinJeu(grille, prochainjoueur);
        while(b==0){
                    affichegrille(grille);
                    metUnPionSurLaGrille(grille, prochainjoueur);
                    b=testeFinJeu(grille);
                    Joueur_Suivant(prochainjoueur)
                    }
        affichegrille(grille);
        cout<<"Partie finie"<<endl;
        system("PAUSE");
        return 0;
    }

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 95
    Par défaut
    Ah oui, ca marche parfaitement, mon erreur était donc du au fait que je changeais de caractère pour le joueur avant de tester s'il avait gagné ou non.
    Merci de ton aide.

Discussions similaires

  1. pb de programmation du Morpion en allegro
    Par hsoussou dans le forum Allegro
    Réponses: 5
    Dernier message: 19/05/2006, 11h02
  2. [Débutant] Jeu Morpion en C++ avec OpenGL
    Par Paulinho dans le forum OpenGL
    Réponses: 2
    Dernier message: 31/03/2006, 13h15
  3. [LG]Un jeu du morpion
    Par yffick dans le forum Langage
    Réponses: 10
    Dernier message: 23/12/2003, 18h52
  4. [Morpion] Faire jouer l'ordinateur intelligement
    Par Invité dans le forum Intelligence artificielle
    Réponses: 8
    Dernier message: 18/09/2003, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo