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

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

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

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

Добавлен: 09.01.2024

Просмотров: 103

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


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;

}

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

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



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