Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. typedef vector<vector<char> > tab;
  6.  
  7. void affiche (tab x);//afiche le tableau avec les X et les O
  8. tab creation();// il permet de crée le tableau qui vas contenir les X et les O
  9. void placer_pion(tab& x,char L);// la fonction demande a l'utilisateur un nombre entre 1 et 9 et puis la verifie avec verif_et_gagne
  10. void affichage_numero(tab x);// il affiche un tableau avec les même dimentions que celui des x et o mais il affiche des chifres entre 1 et 9
  11. //cela permet de pouvoir placer les x et les o
  12. bool verif_et_place(tab& x,int numero,char L);// la fonction verifie si il n'y a pas deja de x ou o a la position choisie et si il n'y a rien place le X ou le O
  13. bool gagne(tab x,char);// la fonction verifie si un des 2 joueur a gagner la partie
  14.  
  15. int main()
  16. {
  17.     int x(0);
  18.     char lettre;
  19.     tab banana(creation());
  20.     do
  21.     {
  22.         if(x%2==0)// permet au joueur d'alterner leur tour
  23.         {
  24.             lettre='X';
  25.         }
  26.         else
  27.         {
  28.             lettre='O';
  29.         }
  30.         placer_pion(banana,lettre);
  31.         x++;
  32.     }
  33.     while(gagne(banana,lettre) and x<9);// si le nombre vaut 9 cela veut dire que toute les cases sont pliene --> voir affichage_numero
  34.     if(gagne(banana,lettre))
  35.     {
  36.         cout<<"le joueur "<<lettre<<" gagne la partie"<<endl;
  37.     }
  38.     if(x==9 and gagne(banana,lettre))
  39.     {
  40.         cout<<"la partie se fini sur une egaliter"<<endl;
  41.     }
  42.     affiche(banana);
  43.  
  44.     return 0;
  45. }
  46.  
  47.  
  48.  
  49.  
  50.  
  51. void affiche (tab x)//affiche le tableau du tic tac toe
  52. {
  53.     for(size_t i(0); i<x.size(); i++)
  54.     {
  55.         for(size_t j(0); j<x.size(); j++)
  56.         {
  57.             cout<<x[i][j]<<" ";
  58.         }
  59.         cout<<endl;
  60.     }
  61. }
  62.  
  63.  
  64. tab creation()//crée le tableau du tic tac toe
  65. {
  66.     tab x(3,vector<char> (3,'_'));
  67.     return x;
  68. }
  69.  
  70. void placer_pion(tab& x,char L)
  71. {
  72.     int numero;
  73.     do
  74.     {
  75.         affiche(x);
  76.         cout<<"Le joueur place son pion( "<<L<<" )"<<endl;
  77.         do
  78.         {
  79.             cout<<"choisisez un numero pour placer votre pion"<<endl;
  80.             affichage_numero(x);
  81.             cin>>numero;
  82.         }
  83.         while(numero<1 or numero>9 );
  84.     }
  85.     while(verif_et_place(x,numero,L));
  86. }
  87.  
  88.  
  89. void affichage_numero(tab x)
  90. {
  91.     int z(6);
  92.     for(int i(0); i<x.size(); i++)
  93.     {
  94.         for(int j(0); j<x.size(); j++)
  95.         {
  96.             z++;
  97.             cout<<z<<" ";
  98.         }
  99.         z=z-6;
  100.         cout<<endl;
  101.     }
  102. }
  103. //afiche le tableau
  104. // 1 2 3
  105. // 4 5 6
  106. // 7 8 9
  107.  
  108.  
  109. bool verif_et_place(tab& x,int numero,char L)
  110. {
  111.     int alpha(0);
  112.     while(numero>3)//l'utilisateur rentre un nombre entre 1 et 9 il faud alors le décomposer en 2 nombre pour défnir la ligne et la colonne
  113.     {
  114.         numero=numero-3;
  115.         alpha++;
  116.     }
  117.     numero--;
  118.  
  119.     if(x[alpha][numero]=='_')//si il est différent de _ c'est que il y a déja un X ou un O
  120.     {
  121.         x[alpha][numero]=L;
  122.         return false;
  123.     }
  124.     else
  125.     {
  126.         cout<<"Un pion se trouve deja a cette emplacement"<<endl;
  127.         return true;
  128.     }
  129.  
  130. }
  131.  
  132.  
  133.  
  134. bool gagne(tab x,char L)
  135. {
  136.     for(size_t i(0); i<x.size(); i++)
  137.     {
  138.         if(x[i][0]==L and x[i][1]==L and x[i][2]==L)//permet de tester les lignes ou les colones
  139.         {
  140.             return false;
  141.  
  142.         }
  143.         if(x[0][i]==L and x[1][i]==L and x[2][i]==L)//permet de tester les lignes ou les colones
  144.         {
  145.             return false;
  146.         }
  147.     }
  148.  
  149.  
  150.     if(x[0][0]==L and x[1][1]==L and x[2][2]==L)//permet de tester les diagonales
  151.     {
  152.         return false;
  153.     }
  154.     if(x[2][0]==L and x[1][1]==L and x[0][2]==L)//permet de tester les diagonales
  155.     {
  156.         return false;
  157.     }
  158.  
  159.     return true;
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement