Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач2.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
249 Кб
Скачать

2 Описание переменных

int mas[n][n] – Двумерный массив, представляющий игровое поле. Каждый элемент массива представляет клетку на поле. Индексы массива соответствуют положению клеток на поле.

Элемент массива может принимать следующие значения:

0 – клетка пуста;

1 – в клетке крестик;

2 – в клетке нолик;

Int count переменная хранящая значение количества заполенных клеток игрового поля, определяет окончание игры по наступлению ничьи.

Static int n =20 – определяет размер игрового поля.

bool myTurn – Установка данной переменной в значение true обозначает что ходит игрок 1, иначе будет ходить игрок номер 2. int last_x – Координата x последнего хода.

bool newGame – установка данной переменной в значение true обозначает что игра началась.

int x1 – Координата x последнего хода.

int y1 – Координата y последнего хода.

int x – размер игрового поля в пикселях по горизонтали

int y – размер игрового поля в пикселях по вертикали

int win – показывает каким способом была завершена игра:

-1 - игра не завершена;

0 – победил 2 игрок;

1 – победил 1 игрок:

Int stats[3] – хранит статистику об играх в данной сессии.

1 слот – количество побед игроком 1

2 слот – количество побед игроком 2

3 слов – количество ничьих

Int p[n] – хранит ссылки на значения массива mas[n][n]

Char output[100] – строка для показа статистики.

COLORREF crossColor = RGB(0,255,0);-цвет крестиков

COLORREF nullColor = RGB(0,0,255); - цвет ноликов

static HPEN hF – ручка для рисования крестиков

static HPEN hS – ручка для рисования ноликов

static HPEТ hLine- ручка для разметки поля

static HPEN hOldLine – ручка для хранения старого значения цвета разметки

static HPEN hOldF - ручка для хранения старого цвета крестиков

static HPEN hOldS - ручка для хранения старого цвета ноликов

static RECT rt – структура хранящая координаты для разметки страницы

static RECT rect – структура хранящая координаты для перерисовки выбранного по клику сектора.

COLORREF crFirst – цвет крестиков, выбираемый в настройках

COLORREF crSecond –цвет ноликов, выбираемый настройках

static CHOOSECOLOR cc - структура "выбора" цвета

static COLORREF CustClr[16] - массив структур для быстрого доступа к ранее выбранным цветам

3 Описание функций программы

Int fwinner(int**mas, int x1, int y1, int n) – выполняет вычисление условий для победы в игре.

Входные параметры:

Int**mas – ссылка на массив со значениями в нем.

Int x1 – координата х последнего хода

Int y1 – координата у последнего хода

Int n – количество клеток по горизонтали/вертикали

Возвращаемое значение:

0 – победил 2 игрок

  1. Победил 1 игрок

  2. Игра продолжается

4 Описание работы программы

Алгоритм выполнения очередного хода:

Игрок выполняет очередной ход при нажатии левой кнопки мыши на игровом поле. При этом вызывается функция обработчика WM_LBUTTONDOWN, которая содержит основной алгоритм выполнения очередного хода игроком и компьютером. Алгоритм работы функции приведен на рисунке 1.

Рисунок 1 – Блок-схема работы WM_LButtonDown.

Алгоритм расчета оценочной функции:

Расчет оценочной функции для клетки игрового поля производится вызовом функции fwinner. Входными параметрами являются ссылка на массив, индексы поля в массиве mas (текущая клетка) и идентификатор в виде числа, какой символ(крестик или нолик) будет поставлен в текущую клетку. Этот символ ставится в массив mas и определяет что поставленно в клетку.

Расчет производится по следующей схеме. Просматриваются все ряды, продолжением которых может являться текущая клетка. Под рядом подразумевается последовательность из 5 клеток, каждая из которых может быть пустой или содержащей такой же символ, как и в текущей. Для этого проходятся все клетки на расстоянии не более 4 от данной, сначала по вертикали, затем по горизонтали, затем по 2 диагоналям. Для каждой проходимой клетки рассчитывается длина ряда, в которую она входит вместе с текущей. Под длиной ряда понимается количество одинаковых символов(крестиков или ноликов) в последовательности из 5 клеток. Если ряд прерывается противоположным символом, то длина ряда принимается равной нулю.

В случае нахождения ряда длиной 5, т. е. выигрышной ситуации, значение длины на экран выводится окно с результатом игры, выиграл игрок 1 или игрок 2. Далее число по одному из индексов в массиве stats увеличивается на 1, в зависимости какой из игроков выиграли или произошла ничья. Это нужно для ведения статистики игры.

Текст программы смотрите в приложении А

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]