Dawno nic nie pisałem w C++, więc w ramach odświeżenia składni napisałem sobie grę w kółko i krzyżyk (wersja konsolowa).
Przyznam, że przyzwyczajenia z języków skryptowych trochę przeszkadzały ;)
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
using namespace std;
void rysuj(char plansza[])
{
cout << "-------------------" << endl;
cout << "| " << plansza[0] << " | " << plansza[1] << " | " << plansza[2] << " |" << endl;
cout << "-------------------" << endl;
cout << "| " << plansza[3] << " | " << plansza[4] << " | " << plansza[5] << " |" << endl;
cout << "-------------------" << endl;
cout << "| " << plansza[6] << " | " << plansza[7] << " | " << plansza[8] << " |" << endl;
cout << "-------------------" << endl << endl;
}
void ruch(char gracz, char plansza[])
{
char pole;
int index;
cout << "Ruch gracza " << gracz << endl;
do
{
cout << "Podaj numer pola: ";
cin >> pole;
index = pole - 48;
}
while ((pole < 49) || (pole > 57) || plansza[index-1] != ' ');
plansza[index-1] = (gracz == 'X') ? 'X' : 'O';
}
void wynik(int tura, char gracz, bool & wygrana, char plansza[])
{
if (
((plansza[0] == plansza[1]) && (plansza[1] == plansza[2]) && (plansza[0] != ' ')) ||
((plansza[3] == plansza[4]) && (plansza[4] == plansza[5]) && (plansza[3] != ' ')) ||
((plansza[6] == plansza[7]) && (plansza[7] == plansza[8]) && (plansza[6] != ' ')) ||
((plansza[0] == plansza[3]) && (plansza[3] == plansza[6]) && (plansza[0] != ' ')) ||
((plansza[1] == plansza[4]) && (plansza[4] == plansza[7]) && (plansza[1] != ' ')) ||
((plansza[2] == plansza[5]) && (plansza[5] == plansza[8]) && (plansza[2] != ' ')) ||
((plansza[0] == plansza[4]) && (plansza[4] == plansza[8]) && (plansza[0] != ' ')) ||
((plansza[2] == plansza[4]) && (plansza[4] == plansza[6]) && (plansza[2] != ' '))
)
{
cout << "Wygrywa gracz " << gracz << endl;
wygrana = true;
}
else if (tura == 9)
{
cout << "Koniec gry, remis. " << endl;
wygrana = true;
}
}
int main()
{
char plansza[9] = {' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '};
char gracz = ' ';
int tura = 0;
bool wygrana = false;
while (!wygrana)
{
rysuj(plansza);
wynik(tura, gracz, wygrana, plansza);
if (!wygrana)
{
gracz = (tura % 2 == 0) ? 'X' : 'Y';
ruch(gracz, plansza);
tura++;
}
getchar();
system("cls");
}
return 0;
}