Добавлен: 09.01.2024
Просмотров: 534
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Функция is_square_up ()
/*Функция проверки того, что на текущем ходу был сформирован квадрат из текущих клеток и клеток, находящихся над нимиПараметры функции:1)Указатель на узел дерева2)Номер строки первой клетки3)Номер столбца первой клетки4)Номер строки второй клетки5)Номер столбца второй клеткиПринцип работы:1)Если у первой клетки есть связь с верхней, то переменная flag_first=true2)Если у второй клетки есть связь с верхней, то переменная flag_second=true3)Если клетки соеденены с верхними, то проверяем связь верхних клеток между собой*/bool is_square_up(Tree_node* PNode, int string_first, int column_first, int string_second, int column_second) { bool flag_first = false; bool flag_second = false; bool flag_up = false; for (int i = 0; i < 4; i++) { if (PNode->connections[string_first][column_first][i] == (string_first - 1) * 10 + column_first) { flag_first = true; } if (PNode->connections[string_second][column_second][i] ==(string_second - 1) * 10 + column_second) { flag_second = true; } } if (flag_second == true && flag_first == true) { for (int i = 0; i < 4; i++) { if (PNode->connections[string_first - 1][column_first][i] ==(string_second - 1) * 10 + column_second) { flag_up = true; } } } return flag_up;}Функция is_square_down ()
/*Функция проверки того, что на текущем ходу был сформирован квадрат из текущих клеток и клеток, находящихся под нимиПараметры функции:1)Указатель на узел дерева2)Номер строки первой клетки3)Номер столбца первой клетки4)Номер строки второй клетки5)Номер столбца второй клеткиПринцип работы:1)Если у первой клетки есть связь с нижней, то переменная flag_first=true2)Если у второй клетки есть связь с нижней, то переменная flag_second=true3)Если клетки соеденены с нижними, то проверяем связь нижних клеток между собой*/bool is_square_down(Tree_node* PNode, int string_first, int column_first, int string_second, int column_second) { bool flag_first = false; bool flag_second = false; bool flag_down = false; for (int i = 0; i < 4; i++) {if (PNode->connections[string_first][column_first][i] ==(string_first + 1) * 10 + column_first) { flag_first = true; } if (PNode->connections[string_second][column_second][i] == (string_second + 1) * 10 + column_second) { flag_second = true; } } if (flag_second == true && flag_first == true) { for (int i = 0; i < 4; i++) { if (PNode->connections[string_first + 1][column_first][i] ==(string_second + 1) * 10 + column_second) { flag_down = true; } } } return flag_down;}
Функция is_square_right ()
/*Функция проверки того, что на текущем ходу был сформирован квадрат из текущих клеток и клеток, находящихся справаПараметры функции:1)Указатель на узел дерева2)Номер строки первой клетки3)Номер столбца первой клетки4)Номер строки второй клетки5)Номер столбца второй клеткиПринцип работы:1)Если у первой клетки есть связь с правой, то переменная flag_first=true2)Если у второй клетки есть связь с правой, то переменная flag_second=true3)Если клетки соеденены с правыми, то проверяем связь правых клеток между собой*/bool is_square_right(Tree_node* PNode, int string_first, int column_first, int string_second, int column_second) { bool flag_first = false; bool flag_second = false; bool flag_right = false; for (int i = 0; i < 4; i++) { if (PNode->connections[string_first][column_first][i] ==string_first * 10 + column_first + 1) { flag_first = true; } if (PNode->connections[string_second][column_second][i] ==string_second * 10 + column_second + 1) { flag_second = true; } } if (flag_second == true && flag_first == true) { for (int i = 0; i < 4; i++) { if (PNode->connections[string_first][column_first + 1][i] ==string_second * 10 + column_second + 1) { flag_right = true; } } } return flag_right;}Функция is_square_left ()
/*Функция проверки того, что на текущем ходу был сформирован квадрат из текущих клеток и клеток, находящихся слеваПараметры функции:1)Указатель на узел дерева2)Номер строки первой клетки3)Номер столбца первой клетки4)Номер строки второй клетки5)Номер столбца второй клеткиПринцип работы:1)Если у первой клетки есть связь с левой, то переменная flag_first=true2)Если у второй клетки есть связь с левой, то переменная flag_second=true3)Если клетки соеденены с леваыми, то проверяем связь левых клеток между собой*/bool is_square_left(Tree_node* PNode, int string_first, int column_first, int string_second, int column_second) { bool flag_first = false; bool flag_second = false; bool flag_left = false; for (int i = 0; i < 4; i++) { if (PNode->connections[string_first][column_first][i] ==string_first * 10 + column_first - 1) { flag_first = true; } if (PNode->connections[string_second][column_second][i] == string_second * 10 + column_second - 1) { flag_second = true; } } if (flag_second == true && flag_first == true) { for (int i = 0; i < 4; i++) { if (PNode->connections[string_first][column_first - 1][i] == string_second * 10 + column_second - 1) { flag_left = true; } } } return flag_left;}Функция is_square ()
/*Функция проверки того, что на текущем ходу был сформирован квадратПараметры функции:1)Указатель на узел дерева2)Номер строки первой клетки3)Номер столбца первой клетки4)Номер строки второй клетки5)Номер столбца второй клеткиПринцип работы:1)Смотрим номер строки.Если клетки расположены на одной строке:1.1)Если она последняя,то вызываем функцию is_square_up()1.2)Если она первая,то вызываем функцию is_square_down()1.3)Если строка не крайняя,то вызывем функции is_square_up() и is_square_down()2)Смотрим номер столбца. Если клетки в одном столбце:2.1)Если он последний,то вызываем функцию is_square_left()2.2)Если он первый,то вызываем функцию is_square_right()2.3)Если столбец не крайний, то вызывем функции is_square_left() и is_square_right()*/void is_square(Tree_node* PNode, int string_first, int column_first, int string_second, int column_second) { bool flag = false; if (string_first == string_second) { if (string_first == 9) { flag = is_square_up(PNode, string_first, column_first,string_second, column_second); if (flag == true) {PNode->is_square = true;} } if (string_first == 0) {flag = is_square_down(PNode, string_first, column_first,string_second, column_second); if (flag == true) { PNode->is_square = true; } } if (string_first > 0 && string_first < 9) { flag = is_square_up(PNode, string_first, column_first,string_second, column_second); if (flag == true) { PNode->is_square = true; } flag = is_square_down(PNode, string_first, column_first,string_second, column_second); if (flag == true) { PNode->is_square = true; } } } if (column_first == column_second) { if (column_first == 9) { flag = is_square_left(PNode, string_first, column_first,string_second, column_second); if (flag == true) { PNode->is_square = true; } } if (column_first == 0) { flag = is_square_right(PNode, string_first, column_first,string_second, column_second); if (flag == true) { PNode->is_square = true; } } if (column_first > 0 && column_first < 9) { flag = is_square_left(PNode, string_first, column_first,string_second, column_second); if (flag == true) { PNode->is_square = true; } flag = is_square_right(PNode, string_first, column_first,string_second, column_second); if (flag == true) { PNode->is_square = true; } }}}