Gdy podaję wartość zmiennej wybor i jest niewłaściwa czyli różna od 1,2,3,4,5,6,7,8,9 (numerów pola)
a następnie podam poprawną wartość to dzieje się tak jak na screenie , gdy zrobię to co wcześniej tylko że poprawną
będzie 1 to już nie ma pola -1 więc się nie wyświetli . Jeśli podam 2 fałszywe wartości i dopiero 1 poprawną wyświetla 3 X'y . pomóżcie bo już nad tym ślęczę godzinę : ( ps: nie zwracajcie uwagi na inne rzeczy bo ten kod i tak jeszcze zrefaktoryzuje . Jestem świeżakiem w programowaniu więc pomóżcie pls.
#include <iostream>
#include <windows.h>
using namespace std;
char pole[9];
char p=' ';
char o='O';
char x='X';
int wybor;
string setcolor(unsigned short color){
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hcon, color);
return "";
}
void warunki1()
{
if( pole[0]==x && pole[1]==x && pole[2]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
else if(pole[3]==x && pole[4]==x && pole[5]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
else if(pole[6]==x && pole[7]==x && pole[8]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
else if(pole[0]==x && pole[4]==x && pole[8]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
else if(pole[6]==x && pole[4]==x && pole[2]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
else if(pole[0]==x && pole[3]==x && pole[6]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
else if(pole[1]==x && pole[4]==x && pole[7]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
else if(pole[2]==x && pole[5]==x && pole[8]==x)
{
cout<<"Wygrana X";Sleep(3000);
exit(0);
}
}
void warunki2()
{
if( pole[0]==o && pole[1]==o && pole[2]==o)
{
cout<<"Wygrana O";Sleep(3000);
exit(0);
}
else if(pole[3]==o && pole[4]==o && pole[5]==o)
{
cout<<"Wygrana O";Sleep(3000);
exit(0);
}
else if(pole[6]==o && pole[7]==o && pole[8]==o)
{
cout<<"Wygrana O";Sleep(3000);
exit(0);
}
else if(pole[0]==o && pole[4]==o && pole[8]==o)
{
cout<<"Wygrana O";Sleep(3000);
exit(0);
}
else if(pole[6]==o && pole[4]==o && pole[2]==o)
{
cout<<"Wygrana O";Sleep(3000);
exit(0);
}
else if(pole[0]==o && pole[3]==o && pole[6]==o)
{
cout<<"Wygrana O";Sleep(3000);
exit(0);
}
else if(pole[1]==o && pole[4]==o && pole[7]==o)
{
cout<<"Wygrana O";Sleep(3000);
exit(0);
}
else if(pole[2]==o && pole[5]==o && pole[8]==o)
{
cout<<"Wygrana O";
Sleep(3000);
exit(0);
}
}
void sprawdz1 ()
{
wybor=0;
cout << "Gracz pierwszy(krzyzyk), podaj nr pola : ";cin>>wybor;
cout<<endl<<endl;
if(wybor!=1&&wybor!=2&&wybor!=3&&wybor!=4&&wybor!=5&&wybor!=6&&wybor!=7&&wybor!=8&&wybor!=9)
{
cout<<endl<<endl;
cout<<"Nieprawidlowa wartosc!";
cout<<endl<<endl;
Sleep(2000);
sprawdz1();
}
wybor=wybor-1;
if(pole[wybor]==x || pole[wybor]==o)
{
cout<<"To pole jest zajete !";
Sleep(2000);
system("cls");
sprawdz1();
}
pole[wybor]=x;
}
void sprawdz2 ()
{
cout << "Gracz drugi(Kolko), podaj nr pola : "; cin>>wybor;
if(wybor!=1&&wybor!=2&&wybor!=3&&wybor!=4&&wybor!=5&&wybor!=6&&wybor!=7&&wybor!=8&&wybor!=9)
{
cout<<endl<<endl;
cout<<"Nieprawidlowa wartosc!";
cout<<endl<<endl;
Sleep(2000);
sprawdz2();
}
wybor=wybor-1;
if(pole[wybor]==x || pole[wybor]==o)
{
cout<<"To pole jest zajete !";
Sleep(2000);
system("cls");
sprawdz2();
}
pole[wybor]=o;
}
void remis()
{
if((pole[0]==x||pole[0]==o)&&(pole[1]==x||pole[1]==o)&&(pole[2]==x||pole[2]==o)&&(pole[3]==x||pole[3]==o)&&(pole[4]==x||pole[4]==o)&&(pole[5]==x||pole[5]==o)&&(pole[6]==x||pole[6]==o)&&(pole[7]==x||pole[7]==o)&&(pole[8]==x||pole[8]==o))
{
cout<<"Remis";
Sleep(3000);
exit(0);
}
}
int main()
{
for(int i=0;i<=8;i++)
{
pole[i]=p;
}
while(true)
{
sprawdz1();
cout<<"|";if(pole[0]==x){setcolor(12);}else{setcolor(11);}cout<<pole[0];setcolor(15);cout<<"|";if(pole[1]==x){setcolor(12);}else{setcolor(11);}cout<<pole[1];setcolor(15);cout<<"|";if(pole[2]==x){setcolor(12);}else{setcolor(11);}cout<<pole[2];setcolor(15);cout<<"|"<<endl;
cout<<"|";if(pole[3]==x){setcolor(12);}else{setcolor(11);}cout<<pole[3];setcolor(15);cout<<"|";if(pole[4]==x){setcolor(12);}else{setcolor(11);}cout<<pole[4];setcolor(15);cout<<"|";if(pole[5]==x){setcolor(12);}else{setcolor(11);}cout<<pole[5];setcolor(15);cout<<"|";cout<<endl;
cout<<"|";if(pole[6]==x){setcolor(12);}else{setcolor(11);}cout<<pole[6];setcolor(15);cout<<"|";if(pole[7]==x){setcolor(12);}else{setcolor(11);}cout<<pole[7];setcolor(15);cout<<"|";if(pole[8]==x){setcolor(12);}else{setcolor(11);}cout<<pole[8];setcolor(15);cout<<"|";cout<<endl;
warunki1();
warunki2();
sprawdz2();
remis();
cout<<"|";if(pole[0]==x){setcolor(12);}else{setcolor(11);}cout<<pole[0];setcolor(15);cout<<"|";if(pole[1]==x){setcolor(12);}else{setcolor(11);}cout<<pole[1];setcolor(15);cout<<"|";if(pole[2]==x){setcolor(12);}else{setcolor(11);}cout<<pole[2];setcolor(15);cout<<"|"<<endl;
cout<<"|";if(pole[3]==x){setcolor(12);}else{setcolor(11);}cout<<pole[3];setcolor(15);cout<<"|";if(pole[4]==x){setcolor(12);}else{setcolor(11);}cout<<pole[4];setcolor(15);cout<<"|";if(pole[5]==x){setcolor(12);}else{setcolor(11);}cout<<pole[5];setcolor(15);cout<<"|";cout<<endl;
cout<<"|";if(pole[6]==x){setcolor(12);}else{setcolor(11);}cout<<pole[6];setcolor(15);cout<<"|";if(pole[7]==x){setcolor(12);}else{setcolor(11);}cout<<pole[7];setcolor(15);cout<<"|";if(pole[8]==x){setcolor(12);}else{setcolor(11);}cout<<pole[8];setcolor(15);cout<<"|";cout<<endl;
warunki1();
warunki2();
remis();
}
return 0;
}