Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- typedef vector<vector<char> > tab;
- void affiche (tab x);//afiche le tableau avec les X et les O
- tab creation();// il permet de crée le tableau qui vas contenir les X et les O
- 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
- 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
- //cela permet de pouvoir placer les x et les o
- 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
- bool gagne(tab x,char);// la fonction verifie si un des 2 joueur a gagner la partie
- int main()
- {
- int x(0);
- char lettre;
- tab banana(creation());
- do
- {
- if(x%2==0)// permet au joueur d'alterner leur tour
- {
- lettre='X';
- }
- else
- {
- lettre='O';
- }
- placer_pion(banana,lettre);
- x++;
- }
- while(gagne(banana,lettre) and x<9);// si le nombre vaut 9 cela veut dire que toute les cases sont pliene --> voir affichage_numero
- if(gagne(banana,lettre))
- {
- cout<<"le joueur "<<lettre<<" gagne la partie"<<endl;
- }
- if(x==9 and gagne(banana,lettre))
- {
- cout<<"la partie se fini sur une egaliter"<<endl;
- }
- affiche(banana);
- return 0;
- }
- void affiche (tab x)//affiche le tableau du tic tac toe
- {
- for(size_t i(0); i<x.size(); i++)
- {
- for(size_t j(0); j<x.size(); j++)
- {
- cout<<x[i][j]<<" ";
- }
- cout<<endl;
- }
- }
- tab creation()//crée le tableau du tic tac toe
- {
- tab x(3,vector<char> (3,'_'));
- return x;
- }
- void placer_pion(tab& x,char L)
- {
- int numero;
- do
- {
- affiche(x);
- cout<<"Le joueur place son pion( "<<L<<" )"<<endl;
- do
- {
- cout<<"choisisez un numero pour placer votre pion"<<endl;
- affichage_numero(x);
- cin>>numero;
- }
- while(numero<1 or numero>9 );
- }
- while(verif_et_place(x,numero,L));
- }
- void affichage_numero(tab x)
- {
- int z(6);
- for(int i(0); i<x.size(); i++)
- {
- for(int j(0); j<x.size(); j++)
- {
- z++;
- cout<<z<<" ";
- }
- z=z-6;
- cout<<endl;
- }
- }
- //afiche le tableau
- // 1 2 3
- // 4 5 6
- // 7 8 9
- bool verif_et_place(tab& x,int numero,char L)
- {
- int alpha(0);
- 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
- {
- numero=numero-3;
- alpha++;
- }
- numero--;
- if(x[alpha][numero]=='_')//si il est différent de _ c'est que il y a déja un X ou un O
- {
- x[alpha][numero]=L;
- return false;
- }
- else
- {
- cout<<"Un pion se trouve deja a cette emplacement"<<endl;
- return true;
- }
- }
- bool gagne(tab x,char L)
- {
- for(size_t i(0); i<x.size(); i++)
- {
- if(x[i][0]==L and x[i][1]==L and x[i][2]==L)//permet de tester les lignes ou les colones
- {
- return false;
- }
- if(x[0][i]==L and x[1][i]==L and x[2][i]==L)//permet de tester les lignes ou les colones
- {
- return false;
- }
- }
- if(x[0][0]==L and x[1][1]==L and x[2][2]==L)//permet de tester les diagonales
- {
- return false;
- }
- if(x[2][0]==L and x[1][1]==L and x[0][2]==L)//permet de tester les diagonales
- {
- return false;
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement