// TicTaToe
#include "pch.h"
#include <iostream>
#include <ctime>
using namespace std;
const int N = 3;
void printField(int field[N][N])
{
cout << endl << " -----------------" << endl;
for (size_t i = 0; i < N; i++)
{
for (size_t j = 0; j < N; j++)
{
cout << "| " << (field[i][j] == 1 ? "X" : field[i][j] == 2 ? "O" : " ") << " ";
}
cout << "|" << endl << "|-----------------|" << endl;
}
}
void initField(int field[N][N])
{
for (size_t i = 0; i < N; i++)
{
for (size_t j = 0; j < N; j++)
field[i][j] = 0;
}
}
bool checkVictory(int field[N][N])
{
// проверка победы по строкам (по горизонтали)
for (size_t row = 0; row < N; row++)
if (field[row][0] == field[row][1] && field[row][1] && field[row][2] && field[row][2] != 0)
return true;
// проверка победы по столбцам (по вертикали)
for (size_t column = 0; column < N; column++)
if (field[0][column] == field[1][column] && field[1][column] && field[2][column] && field[2][column] != 0)
return true;
// проверка победы на главной диагонали
if (field[0][0] == field[1][1] && field[1][1] && field[2][2] && field[1][1] != 0)
return true;
// проверка победы на обратной диагонали
if (field[0][2] == field[1][1] && field[1][1] && field[2][0] && field[1][1] != 0)
return true;
return false;
}
int main()
{
srand(time(NULL));
cout << "TicTaToe";
int field[N][N];
int victory = 0;
initField(field);
printField(field);
//
char name2[100] = "User", name1[100] = "Computer";
int turn = 0; // turn number
int x, y;
do
{
cout << "The next turn is: ";
if (turn % 2 == 0)
{
cout << name1;
do
{
x = 1 + rand() % 3;
y = 1 + rand() % 3;
} while (field[x-1][y-1] != 0);
field[x - 1][y - 1] = 1;
}
else
{
cout << name2;
do
{
cout << endl << (turn == 0 ? name1 : name2) << ", input your turn: ";
cout << endl << "X: ";
cin >> x;
cout << endl << "Y: ";
cin >> y;
if (
(x >= 1 && x <= 3)
&&
(y >= 1 && y <= 3)
&&
(field[x-1][y-1] == 0)
)
break;
} while (true);
field[x - 1][y - 1] = 2;
}
printField(field);
if (checkVictory(field) == true)
break;
turn++;
} while (turn <= 9);
cout << endl << (turn %2 == 0 ? name1 : name2) << " is winner!!!";
}