[code=cpp]
#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;
}