Quick actions

cmd+k|ctrl+k

Navigation

Languages

TicTaToe

Snippet info

Language

Cpp

Visibility

public

Author

speranskiyva

Created

2018-11-29T20:03:51Z

Updated

2018-12-12T17:05:41Z

// 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!!!";
}
INFO