4. Описание структуры данных
Информация о расположении шашек хранится в массиве данных перечисляемого типа – W,WD,B,BD,N,G, где
W – белая шашка
WD – белая дамка
B – черная шашка
BD – черная дамка
N – свободное поле
G – поле, не принадлежащее доске. Поля этого типа окаймляют доску и нужны для того, чтобы индексы массива шашек всегда находились в допустимых пределах (мы расширяем размерность массива за счет этих полей, так как процедуры и функции программы могут обращаться к этому массиву с индексами, не принадлежащими [1..8,1..8]).
Особенностью программы является то, что в ней отсутствуют глобальные переменные. Это сделано для того, чтобы не заботится о том, использовали ли мы такую – то переменную раньше, или нет, и не хранится ли уже в ней что-нибудь нужное.
Большинство функций возвращают значение типа Boolean, что упростило отслеживание данных передаваемых между модулями программы.
-
-
Описание процедур и функций
procedure Tdesk.ScanDamk
Превращает шашку в дамку если она достигла нужной позиции.
procedure Beep
Пищит.
procedure TGame.Init
Инициализация графики. Вход в графический режим и обработка ошибок включения графического режима.
procedure TDesk.Init
Установка размера игрового поля и всех графических объектов (кроме текста). При вычислении размеров и места расположения всех графических объектов используется коэффициент, варьируя которым в допустимых пределах можно изменять их размеры.
procedure TGame.Done
Завершение графического режима.
procedure TGame.Run
Выдача сообщений, инициализация игроков и запуск др. модулей.
procedure TGame.CompPlay
Основная процедура, осуществляющая общую координацию в случае если ходит компьютер.
function TDesk.CompMoveFrom
Отдает шашку под бой, когда нет других ходов и возвращает .t. когда походит.
function TDesk.CompKillFrom
Убивает одну или несколько шашек противника, а так же возвращает .t. когда ход закончен.
function TDesk.KillFrom
Возвращает t. если из данной позиции можно походить и не попасть под бой, а так же ходит если эти условия выполнены.
procedure TGame.Play
Основная процедура игры. Осуществляет координацию модулей и движение курсора. Выполняется когда ход принадлежит человеку.
procedure Select (p:position)
Рисует курсор по передаваемым координатам.
function TDesk.Analise
Возвращает f. если введенный человеком ход не соответствует правилам игры использует нач. и кон. коорд. положения курсора, а так же расположение шашек на доске.
function TDesk.MoveFrom
Проверяет возможность хода из данной клетки.
function TDesk.NoFight
Возвращает .t. если бить нечего.
function TDesk.FightFrom
Возвращает .t. если в текущей позиции есть фишка и она должна что - то бить.
function TDesk.NoStep
Возвращает T. если у игрока (Color=.t. - W Color=.f. - B) нет ходов.
function TDesk.StepFrom
Возвращает t. если в текущей клетке есть шашка и ею можно походить.
procedure TPlayer.Init
Инициализация игроков.
procedure TDesk.Draw
Рисует доску и фигуры по данным массива фигур. Для прорисовки фигур используется процедура TDesk.DrawFigure
procedure TDesk.DrawFigure
Рисует шашку используя передаваемые координаты и параметры - цвет, дамка/не дамка.
Заключение
В данной работе были широко использованы методы ООП. Это позволило хорошо структурировать программу и облегчило ее написание. Используются все три свойства ООП - инкапсуляция, наследование, полиморфизм. Высокая структурированность программы сделала ее достаточно прозрачной для внесения изменений и дополнений, в нее легко добавить еще несколько процедур для улучшения интеллектуальности игры (сейчас на местах, где должны вызываться некоторые из этих процедур стоят программные заглушки, все они снабжены комментариями и при желании их можно снять и дописать соответствующие процедуры).
В заключение следует сказать, что игра в шашки в общем-то легко поддается алгоритмизации в силу достаточно простых правил, хотя это не является очевидным, и на первый взгляд задача казалась неразрешимой.
Список литературы
-
Зуев. Язык программирования Turbo Pascal 6.0. - М.: Унитех, 1992.- 298 с.
-
Довгаль С.И., Сбитнев А.И. Персональные ЭВМ: Турбо - Паскаль V 7.0, Объектное программирование.- Киев: Довгаль,1995. - 320 с.
-
Епаншенков А.М., Епаншенков В.А. Программирование в среде TURBO PASCAL 7.0.- М.: Диалог - МИФИ, 1996. - 288 с.
-
Турбо Паскаль 7.0 - К.: Торгово-издательское бюро BHV, 1995 - 448 с.