Gra w kółko i krzyżyk

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;
}