Программа-игра "Ним"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



ельных форм, а также создание клавиш и пр. На этапе кодирования учитывались все возможные ситуации расстановки переключателей, а на этапе тестирования обрабатывались нежелательные исключения. Кроме RadioButton в программном коде фигурирует объект типа TButton, представляющий собой кнопку управления. Предполагается, что пользователь-игрок имеет право обдумать свой ход и принять взвешенное решение по удалению определенных шариков с формы.

.Предусмотреть надежную систему контроля правил игры и поведения конечного пользователя.

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

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

В результате кодирования использовались базовые принципы объектно-ориентированного программирования: был создан основной функциональный класс, набор методов и логических функций. Код, оформленный таким образом, более удобочитаем и понятен, нежели код, написанный в произвольном стиле. Кроме того, с таким объектным кодом удобнее впоследствии работать и самому программисту-разработчику. Более подробно данный вопрос рассмотрен в разделах Проектирование и Кодирование.

Проектирование

В данной работе используется метод восходящего проектирования.

Технология визуального программирования, поддерживаемая средой разработки Borland C++ Builder, позволяет достаточно легко, быстро и эффективно проектировать интерфейс взаимодействия пользователя с системой на основе библиотек визуальных компонентов.

В первую очередь необходимо создать модуль снятия камешков с формы и основу главного игрового класса со вспомогательными методами, обрабатывающими специальные ячейки памяти. Эти ячейки могут принимать только два значения правда или ложь. В программе, в качестве вместилища таких ячеек, можно использовать три булевских массива размерами, 3, 2, 1 ячеек памяти соответственно. Благодаря первичной связи модулей, необходимо наладить обращение пользователя к объектам типа Shape, которое прямым образом будет отражено на поведении трех вышеперечисленных массивов. Уже на основе состояния зарезервированных ячеек памяти программа будет выстраивать игровое решение.

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

Манипуляции с графикой целесообразно перенести в отдельные графические методы класса.

При таком подходе выполняется требование 5, положенное в разделе Анализ требований.

Взаимодействие основных модулей игры отражено в схеме алгоритма на рисунке 1. Это общее представление структуры программы.

Рисунок 1

Более детальный анализ связей и модульной зависимости игры рассмотрен на рисунке 2 и в блоке Кодирование.

Рисунок 2

При главном окне программы содержится набор вложенных обработчиков событий, созданных средой и настроеннных на однозначную обработку действий пользователя. Сюда можно отнести и RadioButton, и Button, и сами объекты Shape.

Методы поддержки принадлежат непосредственно ЦАКП (центральному алгоритмическому классу программы). Они обрабатывают поступающие значения, передают их в класс, который затем возвращает результат итерации в главное окно программы посредством манипуляций объектами главной формы.

Анализ мотиваций искусственного интеллекта показал следующую зависимость для игры с {3,2,1} кучками объектов: тот, кто берет первый камешек, при правильной игре оппонента, должен понести поражение. Наиболее красочно эту зависимость описывает граф, представленный на рисунке 3.

Рисунок 3

Продвигаясь по этому графу сверху-вниз можно показать все возможные выигрышные комбинации. Эта ценная информация и послужила основой логики компьютера. Более подробно тактика искусственного интеллекта будет описана ниже, в блоке Кодирование.

Разработка алгоритма итерации игрового цикла кратко представлена на рисунке 4.

Рисунок 4

логический игра математический программа

Кодирование

Основной функциональный цикл программы, отображенный на рисунке 4, запускается благодаря клику по единственной управляющей кнопке проекта: Button1.

Ниже представлено описание ЦАКП (центрального алгоритмического класса программы).

// -CGame {:list1 [3];list2 [2];list3 [1];gamer; // определяет, чей ход

int index; // проверяет, правильно-ли передан ход

int mod1, mod2, mod3; // измеряет длину list'а

public:();

~CGame();

// устанавливает разводящего игрока

void setGamer (TPanel *Gamer1, TPanel *Gamer2);

// перекрашивает шарики по кликуcolor (TShape *Shape);

// задает граничное условие одного рядаuseHelp (TShape *Shape1, TShape *Shape2,

TShape *Shape3, TShape *Shape4,*Shape5, TShape *Shape6);

// задает граничное условие одного хода, определяет игрока

bool indexator (TPanel *Gamer1, TPanel *Gamer2);

// фиксирует снятые шарик

Copyright © 2008-2014 geum.ru   рубрикатор по предметам  рубрикатор по типам работ  пользовательское соглашение