Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PZ_Curs_TRPO_Pyatnashki_romaferox.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
8.49 Mб
Скачать
  1. Проектирование структуры приложения

Основная логика каждой игры включает подготовку окружения, в котором игра будет выполняться, запуск игры в цикле, пока не будут достигнуты критерии завершения, и очистку окружения. [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 Структура приложения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]