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

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

Программа, полностью написанная на объектно-ориентированном языке С#, является описанием набора классов исследуемой предметной области.

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

  1. Блок-схема, осуществляющая случайную расстановку плиток.

Суть данной игры заключается в том, чтобы собрать «разобранное» изображение.

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

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

Рисунок 2 – Блок-схема алгоритма случайной расстановки плиток

  1. Блок схема метода осуществляющего движение плиток.

Функция void Igra(int x,int y) представлена на рисунке 3.

Рисунок 3 - Блок-схема метода Igra.

  1. Блок-схема метода осуществляющего проверку победы.

Проверка победы предельно проста и осуществляется в методе public override void Update (GameTime gameTime) класса Level. При размещении плиток каждой плитке присваиваются 2 индекса: индекс текущего положения плитки назначающийся при создании плитки и равный номеру устанавливаемой плитки и индекс того где эта плитка должна располагаться назначающийся также в момент создании и равный случайно сгенерированному числу.

При передвижении плиток значения в этих массивов изменяются относительно перемещаемых плиток до тех пор пока индексы того, где должны располагаться плитки не буду упорядочены по возрастанию. Часть метода Update отвечающая за условие победы приведена на рисунке 4.

Рисунок 4 – Блок-схема проверки победы.

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

  1. Описание основных классов игры

Рисунок 5 – Схема классов.

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

Краткое описание классов:

  1. Plitka.cs– класс, описывающие игровые компоненты.

  2. Game1.cs,Level.cs – класс, содержащий основную логику игры.

  3. Program.cs – класс, отвечающий за запуск программы.

  4. Menu.cs – класс для создания меню.

  5. TablRek.cs класс, отвечающий за рекорды.

Рассмотрим класс Level.cs подробнее. В таблице 1 описаны переменные и методы класса. Исходный код приведен в приложении 2.

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

Название

Назначение

public Level(Game game1,int Uroven)

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

private override void Initialize()

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

protected override void LoadContent()

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

Private void CreateNewObject()

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

public override void Update(GameTime gameTime)

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

public override void Draw(GameTime gameTime)

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

protected override void UnloadContent()

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

private void AnimSalut

Создание анимации салюта.

private void Vremy()

Функция контроля времени.

Продолжение таблицы №1.

void Peremeshat()

Перемешивание плиток.

void Igra

Осуществляет передвижение плиток.

public int Perehod(int x)

Определяет куда игра пойдёт дальше.

public int score_up()

Подсчёт очков за уровень.

SpriteBatch spriteBatch, spriteComponentBatch;

Объекты класса SpriteBatch для отрисовки текстур.

Plitka[] plitka;

Массив класса Plitka показывающий число выводимых плиток.

Texture2D texture, backTexture, but1, but2, skin,continew, salut_base,end_but;

Изображения (фон, карты, кнопки).

int[] index;

Массив индексов.

int[] ii;

Позиция части.

int peredv = 0

Число передвижений.

int flag_mb

Флаг победы.

int igra

Запуск игры.

int plitki

Количество плиток.

Продолжение таблицы №1.

int level

Номер уровня.

int shirina

Ширина плитки.

int prodoljenie

Переход на следующий уровень.

int sc_vremy

Время на уровень.

int anim_kol_1

Номер анимации.

int lost_score

Потерянные очки.

int score

Набранные очки.

int mus_count

Запуск музыки.

SpriteFont font;

Шрифт.

Stopwatch stopWatch = new Stopwatch();

string elapsedTime;

TimeSpan ts;

Переменные для обработки времени.

Song levelmus; public SoundEffectInstance plita;

Музыка и звуки.

public plitka salut;

Салют.

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