
- •Аннотация
- •Содержание:
- •Введение
- •Основная часть
- •Функциональное назначение
- •Проектирование структуры приложения
- •Разработка алгоритмов достижения заданной функциональности игры
- •Блок-схема, осуществляющая случайную расстановку плиток.
- •Блок схема метода осуществляющего движение плиток.
- •Блок-схема метода осуществляющего проверку победы.
- •Разработка элементов приложения
- •Описание основных классов игры
- •Разработка двумерных изображений.
- •Разработка 2d спрайтовой анимации.
- •Организация файлов
- •Разработка инсталлятора.
- •Тестирование приложения
- •Техническое обеспечение и программные средства
- •Заключение
- •Список литературы
- •Приложения
- •Приложение №1. Используемые шрифты.
- •Приложение №2. Методы, реализующие основную логику игры.
- •Приложение №3. Примеры текстовых файлов.
Проектирование структуры приложения
Основная логика каждой игры включает подготовку окружения, в котором игра будет выполняться, запуск игры в цикле, пока не будут достигнуты критерии завершения, и очистку окружения. [3]
Идея наличия выполняющейся в цикле основной программной логики является ключевой для игры, поскольку игра должна продолжать выполняться, даже когда нет взаимодействия с пользователем. Это не так для большинства коммерческих приложений, которые делают что-либо только в ответ на пользовательский ввод. [3]
Приведенный ниже псевдокод показывает упрощенную структуру игры, включая игровой цикл:
Инициализация графики, ввода и звука
-Загрузка ресурсов
-Запуск игрового цикла. На каждом шаге:
-Сбор пользовательского ввода
- Выполнение необходимых вычислений
(AI, перемещения, обнаружение столкновений и т.д.)
- Проверка критериев завершения игры - если достигли,
останавливаем цикл
- Рисование (визуализация) экрана, генерирование звука
и обратная связь с игровыми контроллерами
-Завершение графики, ввода и звука
-Освобождение ресурсов
Это упрощенный взгляд — например, вы можете загружать ресурсы внутри игрового цикла во время начала каждого игрового уровня — но он обеспечивает хорошее представление о внутреннем устройстве игры. [3]
Следующий фрагмент псевдокода представляет методы, организованные согласно представленному выше общему игровому циклу, чтобы вы поняли общую структуру кода перед переходом к деталям. [3]
Game1() - Общая инициализация (Game1.cs)
Initialize() - Инициализация игры (Game1.cs)
LoadContent() - Загрузка графических ресурсов (Game1.cs)
Run() - Запуск игрового цикла (Program.cs). На каждом шаге:
Update() - Чтение пользовательского ввода, выполнение вычислений,
проверка завершения игры (Game1.cs)
Draw() - Код визуализации (Game1.cs)
UnloadContent() - Освобождение графических ресурсов (Game1.cs)
Теперь о некоторых методах подробнее.
Метод Initialize вызывается один раз, когда вы выполняете метод Run, прямо перед запуском игрового цикла. Это подходящее место для включения любых не относящихся к графике процедур инициализации, таких как подготовка звукового содержимого. [3]
Графика загружается в отдельном методе, потому что иногда игре может потребоваться перезагрузка графики. Графика загружается в соответствии с текущими параметрами устройства, чтобы обеспечить максимальную производительность. Поэтому, когда эти параметры меняются (например, когда вы меняете разрешение экрана, или когда вы переходите от оконного к полноэкранному режиму), вам необходимо перезагрузить графику. Метод LoadContent вызывается каждый раз, когда игре необходимо загрузить или перезагрузить графику. [3]
Большая часть работы игры происходит внутри игрового цикла. Это то место, где игра проверяет, есть ли ввод от пользователя для обработки, проводятся вычисления искусственного интеллекта игровых персонажей, выполняются перемещения игровых объектов, учитываются столкновения между ними, проверяются критерии завершения игры и, наконец, где активизируется вибрация пульта, воспроизводится звук и рисуется экран. [3]
Класс Microsoft.Xna.Framework.Game предоставляет два переопределяемых метода, которые вызывает внутренний игровой цикл: Update, куда помещаются игровые вычисления, и Draw, где рисуются игровые объекты. [3]
На рисунке 1 изображена структура приложения. Описание методов класса Level представлено в таблице №1.
Рисунок .1 Структура приложения.