Крестики-нолики ИИ делают больше чем один шаг за один раз?
void Ai() { //------------------------------------------------------- if (matrix[0][0] == 'X' && matrix[1][0] == 'X' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[2][1] == 'X' && matrix[2][2] == 'X' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[0][2] == 'X' && matrix[1][1] == 'X' && matrix[2][0] == '7') matrix[2][0] = 'O'; if (matrix[0][2] == 'X' && matrix[1][2] == 'X' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[2][1] == 'X' && matrix[2][0] == 'X' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == 'X' && matrix[1][1] == 'X' && matrix[2][2] == '9') matrix[2][2] = 'O'; if (matrix[1][0] == 'X' && matrix[2][0] == 'X' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == 'X' && matrix[0][2] == 'X' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[1][1] == 'X' && matrix[2][2] == 'X' && matrix[0][0] == '1') matrix[0][0] = 'O'; if (matrix[0][0] == 'X' && matrix[0][1] == 'X' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][2] == 'X' && matrix[2][2] == 'X' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][1] == 'X' && matrix[2][0] == 'X' && matrix[0][2] == '3') matrix[0][2] = 'O'; if (matrix[0][0] == 'X' && matrix[2][0] == 'X' && matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[0][1] == 'X' && matrix[2][1] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][2] == 'X' && matrix[2][2] == 'X' && matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[0][0] == 'X' && matrix[0][2] == 'X' && matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[1][0] == 'X' && matrix[1][2] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[2][0] == 'X' && matrix[2][2] == 'X' && matrix[2][1] == '8') matrix[2][1] = 'O'; else if (matrix[2][0] == 'X' && matrix[0][2] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][0] == 'X' && matrix[2][2] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; //---------------------------------------------------------- if (matrix[0][0] == 'O' && matrix[1][0] == 'O' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[2][1] == 'O' && matrix[2][2] == 'O' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[0][2] == 'O' && matrix[1][1] == 'O' && matrix[2][0] == '7') matrix[2][0] = 'O'; if (matrix[0][2] == 'O' && matrix[1][2] == 'O' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[2][1] == 'O' && matrix[2][0] == 'O' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == 'O' && matrix[1][1] == 'O' && matrix[2][2] == '9') matrix[2][2] = 'O'; if (matrix[1][0] == 'O' && matrix[2][0] == 'O' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == 'O' && matrix[0][2] == 'O' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[1][1] == 'O' && matrix[2][2] == 'O' && matrix[0][0] == '1') matrix[0][0] = 'O'; if (matrix[0][0] == 'O' && matrix[0][1] == 'O' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][2] == 'O' && matrix[2][2] == 'O' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][1] == 'O' && matrix[2][0] == 'O' && matrix[0][2] == '3') matrix[0][2] = 'O'; if (matrix[0][0] == 'O' && matrix[2][0] == 'O' && matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[0][1] == 'O' && matrix[2][1] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][2] == 'O' && matrix[2][2] == 'O' && matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[0][0] == 'O' && matrix[0][2] == 'O' && matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[1][0] == 'O' && matrix[1][2] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[2][0] == 'O' && matrix[2][2] == 'O' && matrix[2][1] == '8') matrix[2][1] = 'O'; else if (matrix[2][0] == 'O' && matrix[0][2] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][0] == 'O' && matrix[2][2] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; //--------------------------------------------------------- else if (a == 1) { if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 2) { if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 3) { if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } if (a == 4) { if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 5) { if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 6) { if (matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 7) { if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 8) { if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 9) { if (matrix[2][1] == '8') matrix[2][1] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; } }
Мне 14 лет, и я изучаю C++ как свой первый язык уже около 2-3 месяцев. Это мой Крестики-нолики v2BETA_AI ИИ-скрипт, написанный на c++. Игрок 1 - Это "х", а ИИ - "о". Игрок 1 Всегда первый. Во время тестирования игры он запускает код блокировки и завершения кода нормально, но затем делает больше ходов. Это не всегда влияет на ход игры, так как ИИ уже сможет сделать ход, чтобы выиграть, но тогда больше пробелов заменяется на "О".
например:
(Как выложить это для игры)
1 2 3
4 5 6
7 8 9
Введите номер в нужное поле: 5
1 2 3
O X 6
7 8 9
Введите номер в нужное поле: 2
O X 3
O X 6
7 8 9
Введите номер в нужное поле: 6
O X (O) здесь это ненужное O было добавлено и иногда вызывает проблемы.
О Х Х
O 8 9
Компьютер побеждает!!!
Весь Исходный Код
#include <iostream> #include <cstdlib> using namespace std; char matrix[3][3] = { '1','2','3','4','5','6','7','8','9'}; char player = 'X'; int n; int a; int AI; string r; void draw() { cout << endl << endl << "Player 1 = X" << endl; cout << "Computer = O"; cout << endl << endl << endl; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cout << matrix [i][j] << " " << " "; } cout << endl << endl; } } void input() { cout << endl << endl << "Press the number you want in the field: "; cin >> a; if (a == 1001) { exit(0); } else if (a == 1) { if (matrix[0][0] == '1') matrix[0][0] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 2) { if (matrix[0][1] == '2') matrix[0][1] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 3) { if (matrix[0][2] == '3') matrix[0][2] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 4) { if (matrix[1][0] == '4') matrix[1][0] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 5) { if (matrix[1][1] == '5') matrix[1][1] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 6) { if (matrix[1][2] == '6') matrix[1][2] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 7) { if (matrix[2][0] == '7') matrix[2][0] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 8) { if (matrix[2][1] == '8') matrix[2][1] = player; else { cout << "Field is taken. Try again."; input(); } } else if (a == 9) { if (matrix[2][2] == '9') matrix[2][2] = player; else { cout << "Field is taken. Try again."; input(); } } if (a > 9 || a < 1) { cout << endl << "Invalid Choice. Try again."; input(); } } void Ai() { //------------------------------------------------------- if (matrix[0][0] == 'X' && matrix[1][0] == 'X' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[2][1] == 'X' && matrix[2][2] == 'X' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[0][2] == 'X' && matrix[1][1] == 'X' && matrix[2][0] == '7') matrix[2][0] = 'O'; if (matrix[0][2] == 'X' && matrix[1][2] == 'X' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[2][1] == 'X' && matrix[2][0] == 'X' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == 'X' && matrix[1][1] == 'X' && matrix[2][2] == '9') matrix[2][2] = 'O'; if (matrix[1][0] == 'X' && matrix[2][0] == 'X' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == 'X' && matrix[0][2] == 'X' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[1][1] == 'X' && matrix[2][2] == 'X' && matrix[0][0] == '1') matrix[0][0] = 'O'; if (matrix[0][0] == 'X' && matrix[0][1] == 'X' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][2] == 'X' && matrix[2][2] == 'X' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][1] == 'X' && matrix[2][0] == 'X' && matrix[0][2] == '3') matrix[0][2] = 'O'; if (matrix[0][0] == 'X' && matrix[2][0] == 'X' && matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[0][1] == 'X' && matrix[2][1] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][2] == 'X' && matrix[2][2] == 'X' && matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[0][0] == 'X' && matrix[0][2] == 'X' && matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[1][0] == 'X' && matrix[1][2] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[2][0] == 'X' && matrix[2][2] == 'X' && matrix[2][1] == '8') matrix[2][1] = 'O'; else if (matrix[2][0] == 'X' && matrix[0][2] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][0] == 'X' && matrix[2][2] == 'X' && matrix[1][1] == '5') matrix[1][1] = 'O'; //---------------------------------------------------------- if (matrix[0][0] == 'O' && matrix[1][0] == 'O' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[2][1] == 'O' && matrix[2][2] == 'O' && matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[0][2] == 'O' && matrix[1][1] == 'O' && matrix[2][0] == '7') matrix[2][0] = 'O'; if (matrix[0][2] == 'O' && matrix[1][2] == 'O' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[2][1] == 'O' && matrix[2][0] == 'O' && matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == 'O' && matrix[1][1] == 'O' && matrix[2][2] == '9') matrix[2][2] = 'O'; if (matrix[1][0] == 'O' && matrix[2][0] == 'O' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == 'O' && matrix[0][2] == 'O' && matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[1][1] == 'O' && matrix[2][2] == 'O' && matrix[0][0] == '1') matrix[0][0] = 'O'; if (matrix[0][0] == 'O' && matrix[0][1] == 'O' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][2] == 'O' && matrix[2][2] == 'O' && matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][1] == 'O' && matrix[2][0] == 'O' && matrix[0][2] == '3') matrix[0][2] = 'O'; if (matrix[0][0] == 'O' && matrix[2][0] == 'O' && matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[0][1] == 'O' && matrix[2][1] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][2] == 'O' && matrix[2][2] == 'O' && matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[0][0] == 'O' && matrix[0][2] == 'O' && matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[1][0] == 'O' && matrix[1][2] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[2][0] == 'O' && matrix[2][2] == 'O' && matrix[2][1] == '8') matrix[2][1] = 'O'; else if (matrix[2][0] == 'O' && matrix[0][2] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][0] == 'O' && matrix[2][2] == 'O' && matrix[1][1] == '5') matrix[1][1] = 'O'; //--------------------------------------------------------- else if (a == 1) { if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 2) { if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 3) { if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } if (a == 4) { if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 5) { if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 6) { if (matrix[1][1] == '5') matrix[1][1] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 7) { if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 8) { if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[2][1] == '8') matrix[2][1] = 'O'; } else if (a == 9) { if (matrix[2][1] == '8') matrix[2][1] = 'O'; else if (matrix[1][1] == '5') matrix[1][1] == 'O'; else if (matrix[1][2] == '6') matrix[1][2] = 'O'; else if (matrix[2][2] == '9') matrix[2][2] = 'O'; else if (matrix[0][0] == '1') matrix[0][0] = 'O'; else if (matrix[0][1] == '2') matrix[0][1] = 'O'; else if (matrix[2][0] == '7') matrix[2][0] = 'O'; else if (matrix[1][0] == '4') matrix[1][0] = 'O'; else if (matrix[0][2] == '3') matrix[0][2] = 'O'; } } char win() { if (matrix[0][0] == 'X' && matrix[0][1] == 'X' && matrix[0][2] == 'X') return 'X'; if (matrix[1][0] == 'X' && matrix[1][1] == 'X' && matrix[1][2] == 'X') return 'X'; if (matrix[2][0] == 'X' && matrix[2][1] == 'X' && matrix[2][2] == 'X') return 'X'; if (matrix[0][0] == 'X' && matrix[1][0] == 'X' && matrix[2][0] == 'X') return 'X'; if (matrix[0][1] == 'X' && matrix[1][1] == 'X' && matrix[2][1] == 'X') return 'X'; if (matrix[0][2] == 'X' && matrix[1][2] == 'X' && matrix[2][2] == 'X') return 'X'; if (matrix[0][0] == 'X' && matrix[1][1] == 'X' && matrix[2][2] == 'X') return 'X'; if (matrix[0][2] == 'X' && matrix[1][1] == 'X' && matrix[2][0] == 'X') return 'X'; if (matrix[0][0] == 'O' && matrix[0][1] == 'O' && matrix[0][2] == 'O') return 'O'; if (matrix[1][0] == 'O' && matrix[1][1] == 'O' && matrix[1][2] == 'O') return 'O'; if (matrix[2][0] == 'O' && matrix[2][1] == 'O' && matrix[2][2] == 'O') return 'O'; if (matrix[0][0] == 'O' && matrix[1][0] == 'O' && matrix[2][0] == 'O') return 'O'; if (matrix[0][1] == 'O' && matrix[1][1] == 'O' && matrix[2][1] == 'O') return 'O'; if (matrix[0][2] == 'O' && matrix[1][2] == 'O' && matrix[2][2] == 'O') return 'O'; if (matrix[0][0] == 'O' && matrix[1][1] == 'O' && matrix[2][2] == 'O') return 'O'; if (matrix[0][2] == 'O' && matrix[1][1] == 'O' && matrix[2][0] == 'O') return 'O'; return '/'; } int main() { int n = 0; cout << "Tic Tac Toe v2 BETA" << endl; cout << "-------------------" << endl; system("TITLE Tic Tac Toe"); system("COLOR a"); draw(); while (1) { n++; input(); Ai(); system("cls"); draw(); if (win() == 'X') { cout << "Player 1 Wins!!!" << endl << endl; break; } if (win() == 'O') { cout << "Computer Wins!!!" << endl << endl; break; } else if (win() == '/' && n == 5) { cout << "It's a Draw!!!" << endl << endl; break; } } system("PAUSE"); return 0; }
Я больше тестировал игру, и она действительно немного мешает. Я сыграл 3 хода, и остальная часть поля была покрыта буквами "О".
Это также может помочь:
0,0 (1)| 0,1 (2)| 0,2 (3)
-------------------------
1,0 (4)| 1,1 (5)| 1,2 (6)
-------------------------
2,0 (7)| 2,1 (8)| 2,2 (9)
Что я уже пробовал:
Я пытался изменить все операторы if, чтобы переключить операторы, но ничего.
Philippe Mori
Вы должны реорганизовать код... Например, win
функция имеет 2 части, которые идентичны, за исключением того, что они проверяют наличие X или O. Вы можете создать функцию, которая будет принимать параметр для символа (X или O) и возвращает true или false. Кроме того, код для тестирования каждой строки аналогичен, поэтому у вас может быть функция для тестирования указанной строки. Вы можете сделать то же самое для столбцов... После этого вы можете сделать аналогичный рефакторинг для ИИ, а затем использовать циклы. После того, как вы улучшили код, его будет легче исправить.