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

4. Описание структуры данных

Информация о расположении шашек хранится в массиве данных перечисляемого типа – W,WD,B,BD,N,G, где

W – белая шашка

WD – белая дамка

B – черная шашка

BD – черная дамка

N – свободное поле

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

Особенностью программы является то, что в ней отсутствуют глобальные переменные. Это сделано для того, чтобы не заботится о том, использовали ли мы такую – то переменную раньше, или нет, и не хранится ли уже в ней что-нибудь нужное.

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

  1. Описание процедур и функций

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

Рисует шашку используя передаваемые координаты и параметры - цвет, дамка/не дамка.

Заключение

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

В заключение следует сказать, что игра в шашки в общем-то легко поддается алгоритмизации в силу достаточно простых правил, хотя это не является очевидным, и на первый взгляд задача казалась неразрешимой.

Список литературы

  1. Зуев. Язык программирования Turbo Pascal 6.0. - М.: Унитех, 1992.- 298 с.

  2. Довгаль С.И., Сбитнев А.И. Персональные ЭВМ: Турбо - Паскаль V 7.0, Объектное программирование.- Киев: Довгаль,1995. - 320 с.

  3. Епаншенков А.М., Епаншенков В.А. Программирование в среде TURBO PASCAL 7.0.- М.: Диалог - МИФИ, 1996. - 288 с.

  4. Турбо Паскаль 7.0 - К.: Торгово-издательское бюро BHV, 1995 - 448 с.

Соседние файлы в папке Курсовая работа