Piszę grę kółko i krzyżyk i ani kółka ani krzyżyki nie chcą się stawiać, po wpisaniu pola 1-9 w zależności od tego czy jest tura gracza 1 czy 2 powinien stawiać się X lub O, jednak tak się nie dzieje a program rysuje z powrotem taką samą plansze jak na początku. W dodatku gdy podam znak inny niż 1-9 program w kółko zaczyna wypisywać w koło "Zły wybór" a chciał bym zrobić żeby wypisywał tylko raz.
#include <iostream>
using namespace std;
char miejsca[9] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
void plansza()
{
system("cls");
cout << endl
<< endl
<< "Kolko i krzyzyk" << endl
<< endl;
cout << "Gracz 1 (X) - Gracz 2 (O)" << endl
<< endl;
cout << " | | " << endl;
cout << " " << miejsca[0] << " | " << miejsca[1] << " | " << miejsca[2] << endl;
cout << " | | " << endl;
cout << "---+---+---" << endl;
cout << " | | " << endl;
cout << " " << miejsca[3] << " | " << miejsca[4] << " | " << miejsca[5] << endl;
cout << " | | " << endl;
cout << "---+---+---" << endl;
cout << " | | " << endl;
cout << " " << miejsca[6] << " | " << miejsca[7] << " | " << miejsca[8] << endl;
cout << " | | ";
}
int SprawdzanieWygranej()
{
//wygrana od lewej do prawej
if (miejsca[0] == miejsca[1] && miejsca[1] == miejsca[2])
{
return 1;
}
else if (miejsca[3] == miejsca[4] && miejsca[4] == miejsca[5])
{
return 1;
}
else if (miejsca[6] == miejsca[7] && miejsca[7] == miejsca[8])
{
return 1;
}
//wygrana na ukos
else if (miejsca[0] == miejsca[4] && miejsca[4] == miejsca[8])
{
return 1;
}
else if (miejsca[2] == miejsca[4] && miejsca[4] == miejsca[6])
{
return 1;
}
//wygrana od góry do dołu
else if (miejsca[0] == miejsca[3] && miejsca[3] == miejsca[6])
{
return 1;
}
else if (miejsca[1] == miejsca[4] && miejsca[4] == miejsca[7])
{
return 1;
}
else if (miejsca[2] == miejsca[5] && miejsca[5] == miejsca[8])
{
return 1;
}
//remis
else if (miejsca[0] != '1' && miejsca[1] != '2' && miejsca[2] != '3' && miejsca[3] != '4' && miejsca[4] != '5' && miejsca[5] != '6' && miejsca[6] != '7' && miejsca[7] != '8' && miejsca[8] != '9')
{
return 0;
}
//jeżeli gra wciąż trwa
else
return -1;
}
int main()
{
int i = 0;
char znak;
int gracz = 1;
int wybor = 0;
do
{
plansza();
gracz = gracz % 2;
if(gracz == 1)
{
znak = 'X';
}
else
{
znak = 'O';
}
cout << endl
<< "Gracz " << gracz << " (" << znak << ") wykonuje ruch na:";
cin >> wybor;
if (wybor == 1 && miejsca[0] == 1)
{
miejsca[0] = znak;
}
if (wybor == 2 && miejsca[1] == 2)
{
miejsca[1] = znak;
}
if (wybor == 3 && miejsca[2] == 3)
{
miejsca[2] = znak;
}
if (wybor == 4 && miejsca[3] == 4)
{
miejsca[3] = znak;
}
if (wybor == 5 && miejsca[4] == 5)
{
miejsca[4] = znak;
}
if (wybor == 6 && miejsca[5] == 6)
{
miejsca[5] = znak;
}
if (wybor == 7 && miejsca[6] == 7)
{
miejsca[6] = znak;
}
if (wybor == 8 && miejsca[7] == 8)
{
miejsca[7] = znak;
}
if (wybor == 9 && miejsca[8] == 9)
{
miejsca[8] = znak;
}
else
{
cout << "Zly wybor";
gracz--;
}
i = SprawdzanieWygranej();
gracz++;
} while (i == -1);
}