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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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