Добавлен: 09.01.2024
Просмотров: 529
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
cin >> start_string;cout << "Введите столбец начальной клетки : ";cin >> start_column; if (start_column < 10 && start_column >= 0 && start_string < 10 && start_string >= 0) { if (PNode->field[start_string][start_column] == 2) { cout << "Введите строку целевой клетки : ";cin >> finish_string;cout << "Введите столбец целевой клетки : ";cin >> finish_column; if (finish_column < 10 && finish_column >= 0 &&finish_string < 10 && finish_string >= 0) { if (PNode->field[finish_string][finish_column] != 1) { if (abs(start_string - finish_string) == 1 && start_column == finish_column || abs(start_column - finish_column) == 1 && start_string == finish_string) { PNode->field[finish_string][finish_column]=2; PNode->count_connections[start_string][start_column]++; PNode->count_connections[finish_string][finish_column]++; int i = 0; while (PNode->connections[start_string][start_column][i]!= -1) {i++; } PNode->connections[start_string][start_column][i] =finish_string * 10 + finish_column; i = 0; while (PNode->connections[finish_string][finish_column][i]!= -1) {i++; } PNode->connections[finish_string][finish_column][i] =start_string * 10 + start_column; is_square(PNode, start_string, start_column, finish_string,finish_column); } else {cout << "\u001B[31m\tЭту клетку нельзя"<< "соеденить\n"<< "\tОт начальной клетки до нее не<< достать\n\n"; read_human_move(PNode); } } else {cout << "\u001B[31m\tЭту клетку нельзя соеденить\n"<< "\tОна принадлежит сопернику\n\n";read_human_move(PNode); } } else {cout << "\u001B[31m\tЦелевая клетка вне допустимого"<<"диапозона\n"<< "\tЗначния строки и столбца должны лежать в"<<"интервале от 0 до 9\n\n";read_human_move(PNode); } } else {cout << "\u001B[31m\tЭта клетка не принадлежит вам\n\n";read_human_move(PNode); } } else {cout << "\u001B[31m\tНачальная клетка вне допустимого" <<"диапозона\n"<< "\tЗначния строки и столбца должны лежать в интервале от 0 до"<<"9\n\n"; read_human_move(PNode); }}
i = 0; } Print_field(root); read_human_move(root); while (root->is_square == true) { system("cls"); Print_field(root); cout << "\u001B[35mВы собрали квадрат\n";root->is_square = false; read_human_move(root); } make_tree(root); alpha_betta(root); choose_best_move(root); while (root->is_square == true) { root = re_create_root(root); root->is_square = false; make_tree(root); alpha_betta(root); choose_best_move(root); i++; } root = re_create_root(root); } return root;}
Функция game()
/*Функция игрыПараметры:1)Указатель на узел дереваПринцип работы:1)Функция повторяется пока игра не окончена2)i- показатель того, что компьютер собрал квадрат3)Если компьютером был собран квадрат,то выводим соответствующую надпись4)Выводим поле игры4)Считываем ход человека5)Если он собрал квадрат - повторяем пункты 4)-5)6)Строим дерево возможных ходов7)Производим алгоритм альфа-бетта отсечения8)Выбираем лучший ход9)Если был собран квадрат- повторяем пункты 6)-9)*/Tree_node* game(Tree_node* root) { int i = 0; while (game_is_over(root) == false) { system("cls"); if (i > 0) { cout << "\u001B[35mКомпьютер собрал квадрат \n";i = 0; } Print_field(root); read_human_move(root); while (root->is_square == true) { system("cls"); Print_field(root); cout << "\u001B[35mВы собрали квадрат\n";root->is_square = false; read_human_move(root); } make_tree(root); alpha_betta(root); choose_best_move(root); while (root->is_square == true) { root = re_create_root(root); root->is_square = false; make_tree(root); alpha_betta(root); choose_best_move(root); i++; } root = re_create_root(root); } return root;}