Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

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

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Порядок и основные этапы разработки логической игры, основанной на конкретной математической раскладке. Существенные проблемы выбора и пути их разрешения. Метод восходящего проектирования: сущность, принципы и особенности. Функциональный цикл программы.
Краткое сожержание материала:

Размещено на

Размещено на

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

Системный анализ

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

Обозначим наиболее существенные проблемы выбора, с которыми предстоит столкнуться:

1. Проектирование математической модели решения поставленной задачи.

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

3. Разработка пользовательского интерфейса и выбор среды программирования.

Рассмотрим возможные пути решения данных проблем:

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

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

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

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

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

Выполнение этой и подобных задач выгодно производить с помощью специализированных пакетов программ-компиляторов с вложенными библиотеками и методами работы с графикой. В данной работе использовался программный набор C++ Builder 2007 from Borland - среда со стандартным компилятором C++.

Анализ требований

На данном этапе были выявлены основные требования для выбора способа решения задачи:

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

Визуализация была реализована с помощью комбинации нужных компонентов типа Shape (встроенное средство среды, позволяет избежать использования сторонних изображений в роли «камешка»), Panel, Button, RadioButton, MainMenu. Такой выбор для логической игры не случаен - предполагается сконцентрировать внимание пользователя на игровом процессе с точки зрения логики игры. Помимо всего прочего, использование именно встроенных средств уменьшит ресурсо-потребление программного продукта, позволит несколько увеличить быстродействие. Графическое представление должно быть понятно любому пользователю игры.

2. Действия программы в лице искусственного интеллекта должны быть подкреплены рациональным поведением «компьютера» в игровом процессе.

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

3. Разработать удобную и понятную систему выбора режима игры и управления (настройки).

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

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

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

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

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

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

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

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

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

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

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

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

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

Рисунок 1

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

Рисунок 2

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

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

Анализ мотиваций...

Другие файлы:

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

Анимационная программа "Своя игра"
Исследование цели, задач и содержания школьной анимационной программы "Своя игра: тропа загадок". Оргкомитет и учредители конкурса. Сценарный план, об...

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

Игра как средство умственного развития детей среднего дошкольного возраста
Сущность игры, история развития и значение в жизни современного дошкольника. Дидактическая игра как основное средство умственного развития. Педагогиче...

Предметы из сюжетов. Настольная развивающая игра-лото
Настольная развивающая игра-лото. Направлена на развитие речи, зрительного восприятия, памяти и логического мышления. Игра для детей 2-5 лет. Игра сос...