#include <iostream>
#include <cctype>
#include <conio.h>
#include <string>
const int MAX_BEURTEN = 10;
using namespace std;
int main(void)
{
int beurten = 0; //van 1 tot 9
int ch = 'J'; //wordt gebruikt om nog een spel te spelen
char cijfer[MAX_BEURTEN]; //array cijfer[]
char persoon; //O of X
char gewonnen = NULL; //Wie heeft er gewonnen?
string hoe; //horizontaal, verticaal of diagonaal?
int keuze; //welk cijfer is er ingevult?
do
{
//standaardwaardes variabelen
beurten = 0;
gewonnen = NULL;
hoe = "";
//standaardwaardes
cijfer[1] = '1';
cijfer[2] = '2';
cijfer[3] = '3';
cijfer[4] = '4';
cijfer[5] = '5';
cijfer[6] = '6';
cijfer[7] = '7';
cijfer[8] = '8';
cijfer[9] = '9';
cout << "Welkom op het spel - Tic Tac Tou - \n\nHet is de bedoeling dat de spelers om beurt een cijfer kiezen.\nWie drie dezelfde heeft op een rij, is gewonnen.\nKies een cijfer van 1 tot 9:\n\n";
cout << cijfer[1] << " " << cijfer[2] << " " << cijfer[3] << endl;
cout << cijfer[4] << " " << cijfer[5] << " " << cijfer[6] << endl;
cout << cijfer[7] << " " << cijfer[8] << " " << cijfer[9] << "\n";
do
{
if (beurten % 2 == 0)
{
persoon = 'O';
}
else
{
persoon = 'X';
}
cout << "\nSpeler " << persoon << " mag een cijfer invullen: ";
cin >> keuze;
cout << "\n";
while(!isdigit(cijfer[keuze]))
{
cout << "Dit cijfer is al in bezet, kies een ander cijfer: ";
cin >> keuze;
cout << "\n";
}
cijfer[keuze] = persoon;
//tonen
cout << cijfer[1] << " " << cijfer[2] << " " << cijfer[3] << endl;
cout << cijfer[4] << " " << cijfer[5] << " " << cijfer[6] << endl;
cout << cijfer[7] << " " << cijfer[8] << " " << cijfer[9] << endl;
/*
Mogelijkheden om te winnen:
Voor speler O:
*/
//horizontaal
if ((cijfer[1] == 'O' && cijfer[2] == 'O' && cijfer[3] == 'O') || (cijfer[4] == 'O' && cijfer[5] == 'O' && cijfer[6] == 'O') || (cijfer[7] == 'O' && cijfer[8] == 'O' && cijfer[9] == 'O'))
{
gewonnen = 'O';
hoe = "horizontaal";
}
//verticaal
if ((cijfer[1] == 'O' && cijfer[4] == 'O' && cijfer[7] == 'O') || (cijfer[2] == 'O' && cijfer[5] == 'O' && cijfer[8] == 'O') || (cijfer[3] == 'O' && cijfer[6] == 'O' && cijfer[9] == 'O'))
{
gewonnen = 'O';
hoe = "verticaal";
}
//diagonaal
if ((cijfer[1] == 'O' && cijfer[5] == 'O' && cijfer[9] == 'O') || (cijfer[3] == 'O' && cijfer[5] == 'O' && cijfer[7] == 'O'))
{
gewonnen = 'O';
hoe = "diagonaal";
}
/*
Mogelijkheden om te winnen:
Voor speler X:
*/
//horizontaal
if ((cijfer[1] == 'X' && cijfer[2] == 'X' && cijfer[3] == 'X') || (cijfer[4] == 'X' && cijfer[5] == 'X' && cijfer[6] == 'X') || (cijfer[7] == 'X' && cijfer[8] == 'X' && cijfer[9] == 'X'))
{
gewonnen = 'X';
hoe = "horizontaal";
}
//verticaal
if ((cijfer[1] == 'X' && cijfer[4] == 'X' && cijfer[7] == 'X') || (cijfer[2] == 'X' && cijfer[5] == 'X' && cijfer[8] == 'X') || (cijfer[3] == 'X' && cijfer[6] == 'X' && cijfer[9] == 'X'))
{
gewonnen = 'X';
hoe = "verticaal";
}
//diagonaal
if ((cijfer[1] == 'X' && cijfer[5] == 'X' && cijfer[9] == 'X') || (cijfer[3] == 'X' && cijfer[5] == 'X' && cijfer[7] == 'X'))
{
gewonnen = 'X';
hoe = "diagonaal";
}
beurten++;
} while (beurten < 9 && gewonnen == NULL);
//Spel afgelopen, resultaten tonen
cout << "\nHet spel is afgelopen: \n\n";
if (gewonnen == 'O')
{
cout << "Speler O is gewonnen -> hij heeft " << hoe << " 3 dezelfde O-tjes!\n" << endl;
}
else if (gewonnen == 'X')
{
cout << "Speler X is gewonnen -> hij heeft " << hoe << " 3 dezelfde X-jes!\n" << endl;
}
else
{
cout << "Het is gelijkspel!\n\n" << endl;
}
cout << "Wilt u nog een spel spelen? J/N\n" << endl;
ch = _getch();
ch = toupper(ch);
} while (ch == 'J');
system("pause");
return 0;
}