Witam!
Stworzyłem program, który prowadzi rozgrywkę pomiędzy dwoma graczami w kółko krzyżyk. Moja prośba o przeglądniecie kodu i ewentualne wskazówki co można było zrobić lepiej, prościej. Proszę również o przetestowanie programu. Zakładam, że gracze podają tylko pola będące w obrębie tablicy. Czy można jakoś łatwiej zapisać daną współrzędną? Tj. zamiast pierwszego pola 0 i 0 to np. nazwę "lewy róg" etc.
Z góry dzięki za pomoc!
#include <time.h>
#include <iostream>
using namespace std;
enum PolePlanszyKolkoKrzyzyk{PPKK_Puste,PPKK_0,PPKK_X};
bool remis(int tablica[3][3])
{
if(tablica[0][0]!=0&&tablica[0][1]!=0&&tablica[0][2]!=0&&tablica[1][0]!=0&&tablica[1][1]!=0&&tablica[1][2]!=0&&tablica[2][0]!=0&&tablica[2][1]!=0&&tablica[2][2]!=0)
{
return true;
}
return false;
}
void wypelnijTablice(int Plansza[3][3])
{
for(int i=0;i<=3;i++)
{
for(int j=0;j<=3;j++)
{
Plansza[i][j]=0;
}
}
}
int wylosujGracza()
{
int wybrany=rand()%PPKK_X+PPKK_0;
string rozpoczynajacy;
if(wybrany==1)
{
cout<<"Zaczyna kolko"<<endl;
}
else
{
cout<<"Zaczyna krzyzyk"<<endl;
}
return wybrany;
}
bool czyWygrana(int tablica[3][3])
{
if((tablica[0][0]==1&&tablica[0][1]==1&&tablica[0][2]==1) || (tablica[0][0]==2&&tablica[0][1]==2&&tablica[0][2]==2) ||(tablica[1][0]==1&&tablica[1][1]==1&&tablica[1][2]==1) || (tablica[1][0]==2&&tablica[1][1]==2&&tablica[1][2]==2)||(tablica[2][0]==1&&tablica[2][1]==1&&tablica[2][2]==1) || (tablica[2][0]==2&&tablica[2][1]==2&&tablica[2][2]==2))
{
return true;
}
else if ((tablica[0][0]==1&&tablica[1][0]==1&&tablica[2][0]==1) || (tablica[0][0]==2&&tablica[1][0]==2&&tablica[2][0]==2) || (tablica[0][1]==1&&tablica[1][1]==1&&tablica[2][1]==1) || (tablica[0][1]==2&&tablica[1][1]==2&&tablica[2][1]==2)||(tablica[0][2]==1&&tablica[1][2]==1&&tablica[2][2]==1) || (tablica[0][2]==2&&tablica[1][2]==2&&tablica[2][2]==2))
{
return true;
}
else if ((tablica[0][0]==1&&tablica[1][1]==1&&tablica[2][2]==1) || (tablica[0][0]==2&&tablica[1][1]==2&&tablica[2][2]==2) || (tablica[0][2]==1&&tablica[1][1]==1&&tablica[2][0]==1) || (tablica[0][2]==2&&tablica[1][1]==2&&tablica[2][0]==2))
{
return true;
}
return false;
}
int wybierzPole(int tablica[3][3],int gracz)
{
int wsA,wsB;
bool test;
do
{
do
{
cout<<"Podaj wspolrzedne pola"<<endl;
cout<<"Wspolrzedna A: ";
cin>>wsA;
cout<<"Wspolrzedna B: ";
cin>>wsB;
if(tablica[wsA][wsB]==PPKK_Puste)
{
tablica[wsA][wsB]=gracz;
cout<<"Wybrano Pole: "<<"["<<wsA<<"]"<<"["<<wsB<<"]"<<endl;
test=true;
}
else
{
cout<<"Pole zajete przez: "<<tablica[wsA][wsB]<<endl;
cout<<"Sprobuj jeszcze raz!"<<endl;
test=false;
}
}while(test==false);
if(czyWygrana(tablica)==true)
{
break;
return gracz;
}
if(remis(tablica)==true)
{
gracz=0;
break;
}
if(gracz==1)
{
gracz=2;
cout<<"Teraz Krzyzyk"<<endl;
}
else if(gracz==2)
{
gracz=1;
cout<<"Teraz Kolko"<<endl;
}
}while(czyWygrana(tablica)==false);
return gracz;
}
int main()
{
srand(time(NULL));
int Plansza[3][3];
int gracz=0;
wypelnijTablice(Plansza);
int zaczynajacy=0;
zaczynajacy=wylosujGracza();
gracz=wybierzPole(Plansza,zaczynajacy);
if(gracz==1)
{
cout<<"Wygrywa kolko!"<<endl;
}
else if(gracz==2)
{
cout<<"Wygrywa krzyzyk!"<<endl;
}
else
{
cout<<"Remis!"<<endl;
}
return 0;
}