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

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

Описание методов класса Game1 представлено в таблице №1.

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

Таблица №1. Описание методов класса Game1

Функции и методы

Назначение

public Game1()

Конструктор класса

protected override void Initialize()

Инициализация.

protected override void LoadContent()

Загрузка игрового контента.

protected void CreateNewObject()

Создание объектов для всех блоков с картинками.

protected override void Update(GameTime gameTime)

Логика игры. Управляет основными действиями игры, отслеживает нажатия левой кнопки мыши, запускает секундомер. Осуществляет проверку на конец игры.

protected override void Draw(GameTime gameTime)

Используется для рисования игровых объектов, вывода текстовых сообщений.

protected override void UnloadContent()

По окончании игрового цикла метод освобождает системные ресурсы.

  1. . Метод protected override void Update(GameTime gameTime)

В данном методе сосредоточена вся логика игры. Он является основным в игровом цикле.

да

да

да

да

да

да

да

да

да

да

да

да

нет

нет

нет

нет

нет

нет

нет

нет

нет

нет

нет

нет

Рисунок 2 Блок-схема метода Update

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

да

нет

Рисунок 2 Блок-схема Update

  1. Разработка элементов приложения

  1. Разработка 2d спрайтовой анимации

Спрайты повсеместно используются в играх, особенно в 2д-играх. Изначально под термином “спрайты” подразумевали небольшие графические картинки, которые выводились на экран. Спрайты в наше время представляют из себя текстуру и (обычно) квадрат, на который эта текстура “натягивается”[1].

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

Для вывода изображений используется класс для представления игрового объекта (см. «Приложение В»). Объект этого класса хранит текстуру спрайта и информацию о его позиции на экране. Также класс позволяет не заботиться о выводе каждого из своих объектов в методе Draw() класса Game1, так как его вывод осуществляется автоматически.

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

На рисунках 3 и 4 представлены спрайты кнопок.

Изображения для основных спрайтов игры можно увидеть на рисунке 5.

Рисунок 3 Cпрайт с кнопкой «Новая игра»

Рисунок 4 Cпрайт с кнопкой «Выход»

Рисунок 5 Изображения для основных спрайтов игры

  1. Создание фона

Фоновое изображение "фон44.png" подключается к проекту, как спрайтовое изображение в методе protected override void LoadContent(). Размер изображения соответствует игровому экрану 800х600 пикселей.

Изображение для фона представлено на рисунке 6.

Рисунок 6 Фоновое изображение

  1. Подключение звуковых эффектов

При запуске игры одновременно с появлением основных спрайтов игры запускается фоновая мелодия.

Загрузка аудиофайла «music.wav» происходит в методе protected override void LoadContent(). Причем для мелодии используется тип «SoundEffect». Для воспроизведения музыки используется команда: soundEffect.Play().

Использование звуковых эффектов представлено в «Приложении А».

  1. Подключение шрифтов

Для вывода сообщений пользователю по окончании игры, а также вывода таймера и количества передвижений используются объекты класса SpriteFont. Для работы со шрифтами создаются файлы с расширением *.spritefont. Приложение использует один такой класс «SpriteFont1.spritefont», который представлен в «Приложении С».

  1. Тестирование приложения

Тестирование приложения осуществлялось в ОС Windows 7. Приложение тестировалось более 50 раз разными людьми. Отказов работы не наблюдалось.

На рисунке 7 изображен первоначальный запуск игры.

Рисунок 7 Запуск игры

После передвижения цифры на пустое место запускается секундомер и начинается счёт количества передвижений. Это показано на рисунке 8

Рисунок 8 Начало работы

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

Рисунок 9 Время закончилось

Когда игра пройдена, выводится сообщение с поздравлением (см. рисунок 10).

Рисунок 10 Окончание игры