Файл: Курсовая работа Игра Точки и квадраты.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 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); }}

Функция 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;}

Функция get_result()

/*Функция вывода результата игры Параметры:1)Указатель на корень дереваПринцип работы:1)Подсчёт баллов игрока и компьютера2)Вывод результата*/void get_result(Tree_node* root) { int score_c = 0, score_h = 0; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (root->field[i][j] == 1) { score_c++; } if (root->field[i][j] == 2) { score_h++; } } } if (score_h > score_c) {cout << "Вы выграли! Ваш счёт " << score_h<< " Счёт компьютера " << score_c << "\n"; } if (score_h < score_c) { cout << "Вы проиграли( Ваш счёт " << score_h << " Счёт компьютера " << score_c << "\n";} if (score_h == score_c) { cout << "Ничья! Ваш счёт " << score_h<< " Счёт компьютера " << score_c << "\n"; }}

Функция main()

int main() { setlocale(LC_ALL, "ru"); //Включение русского языка int field[10][10]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { field[i][j] = 0; } } field[9][0] = 1; field[0][9] = 2; Tree_node* root; root = creat_root(field); root = game(root); Print_field(root); get_result(root); return 0;}

Результаты работы программы

Ввод некорректных данных

Корректная работа программы