Как сделать победу и ничью в крестиках-ноликах на C++?

Не получаеться сделать победу и ничью в консольных крестиках-ноликах. Я сделал сам "геймплей"(если это можно так назвать), а результат игры что-то не получаеться, и сделать все нужно в одной функцие. Вот код:

#include <iostream>
using namespace std;

int main() {
	
	//constanting variabels
	const int rows = 3, cols = 3;
	int CHOSEN_ROW, CHOSEN_COLUMN, count = 0;
	bool wasputted = false, isXwin = false, isOwin = false;
	char matrix[rows][cols]{
		'*','*','*',
		'*','*','*',
		'*','*','*'
	};
	

	//showing the matrix
	for (size_t i = 0; i < rows; i++)
	{
		for (size_t j = 0; j < cols; j++)
		{
			cout << matrix[i][j] << "\t";
		}
		cout << endl;
	}
	
	//main game part

	for (size_t i = 0; i < 9; i++)
	{
		//X putting while get free space
		while (wasputted == false) {

			cout << "Choose the row to put X(1-3) : ";
			cin >> CHOSEN_ROW;
			cout << "\nChoose the colunm X(1-3) : ";
			cin >> CHOSEN_COLUMN;
			//if chosen place is free
			if (matrix[CHOSEN_ROW - 1][CHOSEN_COLUMN - 1] == '*') {
				matrix[CHOSEN_ROW - 1][CHOSEN_COLUMN - 1] = 'X';
				wasputted = true;
				count++;
			}
			//if chosen place is used
			else {
				cout << "This place was used" << endl;
				if (count == 9) {
					break;
				}
				else {
					continue;
				}
				
			}
		}
		//zero the bool variabel
		wasputted = false;

		//showing the matrix
		for (size_t i = 0; i < rows; i++)
		{
			for (size_t j = 0; j < cols; j++)
			{
				cout << matrix[i][j] << "\t";
			}
			cout << endl;
		}

		//O putting while get free space
		while (wasputted == false) {
			cout << "Choose the row to put O(1-3) : ";
			cin >> CHOSEN_ROW;
			cout << "\nChoose the colunm O(1-3) : ";
			cin >> CHOSEN_COLUMN;
			//if chosen place is free
			if (matrix[CHOSEN_ROW - 1][CHOSEN_COLUMN - 1] == '*') {
				matrix[CHOSEN_ROW - 1][CHOSEN_COLUMN - 1] = 'O';
				wasputted = true;
				count = count + 1;
			}
			//if chosen place is used
			else {
				cout << "This place was used" << endl;
				if (count == 9) {
					break;
				}
			}
		}

		if (count == 9) {
			break;
		}
		
		wasputted = false;

		//showing the matrix
		for (size_t i = 0; i < rows; i++)
		{
			for (size_t j = 0; j < cols; j++)
			{
				cout << matrix[i][j] << "\t";

			}
			cout << endl;
		}
		//checking matrix for free places
		for (size_t i = 0; i < rows; i++)
		{
			for (size_t j = 0; j < cols; j++)
			{
				if (matrix[i][j] == '*')
					count = count + 1;
				else {}
			}
		}

	}
}
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
07 мар. 2021, в 03:18
1500 руб./за проект
06 мар. 2021, в 22:58
70000 руб./за проект
06 мар. 2021, в 22:36
10000 руб./за проект