Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовый отчет курсовая 2011.doc
Скачиваний:
6
Добавлен:
05.12.2018
Размер:
1.18 Mб
Скачать

5. Подробное описание метода game

Метод реализует «искусственный интеллект» компьютера. Игрок всегда будет ходить первым и фишкой – крестик, а компьютер, соответственно, ноликом. В массиве маркер – крестик обозначен цифрой «1», нолик – цифрой «0», пустая клетка – цифрой «2». Алгоритм стратегии игры основывается на оценочной функции. Имеется три двумерных массива:

1) chArrPie[i][j]

2) iArrVes0 [i] [j]

3) iArrVesX[i] [j]

Первый массив chArrPie[i] [j] содержит ходы, как компьютера, так и игрока, или, образно говоря, его можно назвать игровой доской ходов. Вторая матрица iArrVes0 [i] [j] содержит текущие ходы фишки – нолик или матрица весов для ноликов, и третья матрица iArrVesX[i] [j], соответственно, текущие ходы фишки – крестик или матрица весов для фишек – крестики.

Изначально каждая ячейка матрицы имеет вес равный нулевому значению. Далее в процессе игры у каждой клетки на вертикали, горизонтали, главной и побочной диагонали изменяется свой вес и, где вес ячейки второй матрицы iArrVes0 [i] [j] наибольший, там ставится соответствующая фишка компьютера, при этом с рядом уже стоящей своей фишкой, таким образом, выстраивая возможный выигрышный ряд из своих фишек. Либо же фишка компьютера ставится, исходя из веса клеток третьей матрицы iArrVesX[i] [j] игрока, таким образом, компьютер блокирует возможный выигрышный ряд игрока.

Данный алгоритм оценивает все четыре выигрышные линии. Далее проверяется выигрышная ситуация игрока и компьютера и, соответственно, если такова существует, то осуществляется вычеркивание пяти подряд стоящих фишек с помощью функции line() для каждой линии.

Также в программе присутствуют члены класса, которые считают победы компьютера – win_comp, игрока – winZnak и ничью – countTie. Все счетчики для игрока отображаются на экране в правом верхнем углу в подменю Start меню Begin, а также вызывается метод сохранения количества побед игрока в любой момент – save (wins_old_nick,win_new_nick) – то есть сохраняются именно победы игрока, которые отображаются в разделе меню Record, при условии, если игрок попал в десятку лучших игроков. За количество побед отвечают два члена класса – wins_old_nick и win_new_nick. Первыйй – содержит количество побед уже зарегистрированного ника, второй – количество побед нового ника. Значения этих переменных передаются из метода game() в метод save(), таким образом, происходит обновление значений членов. Сохранение побед происходит в файле data.txt (рис. 5.1).

Рис. 5.1. Структура файла

Изначально в файле первая строка содержит количество ников: за количество ников отвечает член класса – n , на второй указана длина ника: массив length [i] отвечает за длины ников, так как ников содержится несколько в файле, и на этой же строке далее находится название ника, которое представлено, как массив символов – char nick[10][10], причем массив двумерный, так как ников несколько в файле, на третьей – количество побед, за которое отвечают члены wins_old_nick или win_new_nick. Члены wins_old_nick или win_new_nick обновляются в том случае, если игрок увеличивает количество побед, и, таким образом, его победы сохраняются в файле.

Графический интерфейс игры реализован с помощью стандартных

функций графического режима, который инициализируется при помощи функции inilization_graph(). При этом, управление меню происходит с помощью мыши.