Gra w kółko i krzyżyk
#include<iostream>
#include<string>
using namespace std;
int czy_zajete(char tab[4][4], int x, int y){
bool c=true;
if(tab[y][x]!=' ')c=false;
return c;
}
int remis(char tab[4][4])
{
int f=0;
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
if(tab[i][j]==' ')f++;
}
}
return f;
}
int sprO(char tab[4][4],string gracz2){
bool k=false;
while(1){
if(tab[1][1]=='O' && tab[1][2]=='O' && tab[1][3]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
if(tab[2][1]=='O' && tab[2][2]=='O' && tab[2][3]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
if(tab[3][1]=='O' && tab[3][2]=='O' && tab[3][3]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
if(tab[3][1]=='O' && tab[2][1]=='O' && tab[1][1]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
if(tab[1][2]=='O' && tab[2][2]=='O' && tab[3][2]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
if(tab[1][3]=='O' && tab[2][3]=='O' && tab[3][3]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
if(tab[1][1]=='O' && tab[2][2]=='O' && tab[3][3]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
if(tab[3][1]=='O' && tab[2][2]=='O' && tab[1][3]=='O'){cout<<gracz2<<" wygrywa!"<<endl;k=true;break;}
break;
}
return k;
}
int sprX(char tab[4][4],string gracz1){
bool k=false;
while(1){
if(tab[1][1]=='X' && tab[1][2]=='X' && tab[1][3]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
if(tab[2][1]=='X' && tab[2][2]=='X' && tab[2][3]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
if(tab[3][1]=='X' && tab[3][2]=='X' && tab[3][3]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
if(tab[3][1]=='X' && tab[2][1]=='X' && tab[1][1]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
if(tab[1][2]=='X' && tab[2][2]=='X' && tab[3][2]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
if(tab[1][3]=='X' && tab[2][3]=='X' && tab[3][3]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
if(tab[1][1]=='X' && tab[2][2]=='X' && tab[3][3]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
if(tab[3][1]=='X' && tab[2][2]=='X' && tab[1][3]=='X'){cout<<gracz1<<" wygrywa!"<<endl;k=true;break;}
break;
}
return k;
}
void gra(char tab[4][4], string gracz1, string gracz2){
int x,y;
while(1){
while(1){
cout<<gracz1<<" "; //gracz I
cout<<"podaj wspolrzedne: ";
cin>>x;
cin>>y;
if(czy_zajete(tab,x,y)==0)continue;
if(x<1 || x>3 || y<1 || y>3)continue;
else break;
}
tab[y][x]='X';
cout<<" 1 2 3";
for(int i=1;i<=3;i++){
cout<<endl;
cout<<i;
for(int j=1;j<=3;j++){
cout<<tab[i][j]<<"|";
}
}
cout<<endl<<endl;
if(sprX(tab,gracz1)==1)break; // sprawdza czy gracz1 wygrał;
// jesli nie to gramy dalej
while(1){
cout<<gracz2<<" "; //gracz II
cout<<"podaj wspolrzedne: ";
cin>>x;
cin>>y;
if(czy_zajete(tab,x,y)==0)continue; //sprawdza czy pole nie jest juz zaznaczone
if(x<1 || x>3 || y<1 || y>3)continue;
else break;
}
tab[y][x]='O';
cout<<" 1 2 3";
for(int i=1;i<=3;i++){
cout<<endl;
cout<<i;
for(int j=1;j<=3;j++){
cout<<tab[i][j]<<"|";
}
}
cout<<endl<<endl;
if(sprO(tab,gracz2)==1)break; // sprawdza czy gracz2 wygrał
if(remis(tab)==0){cout<<"REMIS"<<endl;break;} // sprawdza czy remis
continue;
}
}
void plansza(char tab[4][4]){
string gracz1, gracz2;
cout<<endl<<"Podaj imie 1 gracza: ";
cin>>gracz1;
while(1){
cout<<"Podaj imie 2 gracza: ";
cin>>gracz2;
if(gracz2==gracz1){
cout<<endl;
cout<<"Imiona musza sie roznic!"<<endl<<endl;
continue;
}else break;
}
cout<<endl<<endl;
cout<<" 1 2 3";
for(int i=1;i<=3;i++){
cout<<endl;
cout<<i;
for(int j=1;j<=3;j++){
tab[i][j]=' ';
cout<<tab[i][j]<<"|";
}
}
cout<<endl<<endl;
gra(tab,gracz1,gracz2);
}
int main()
{
char tab[4][4];
plansza(tab);
system("pause");
return 0;
}
