- •1. Постановка задачи
- •1.1. Цель разработки
- •2. Объектно-ориентированный анализ
- •2.1. Основные объекты и их иерархия
- •2.2. Свойства и функционирование отдельных объектов
- •2.3. Жизненный цикл программы
- •2.4. Жизненный цикл объекта
- •2.5. Диаграмма потоков системы
- •3.2 Описание реализации основных классов и их методов
- •3.3 Интерфейс пользователя
2.3. Жизненный цикл программы
Первым делом при запуске системы, необходимо создание объектов, которые будут существовать и взаимодействовать в системе. В данной игре на начальном этапе происходит создание игрового поля (создание секторов, в секторах — клетки), случайным образом распределяются сектора среди игроков. Далее происходит раскрытие сектора, т. е. игрок выставляет юниты на один из своих секторов (происходит создание юнитов) до тех пор, пока не истратит ресурсный лимит. Те же действия проделывает и второй игрок. После этого, начинаются боевые действия — на игровом поле происходит перемещение объектов, атака юнитов соперника, затем игроки создают дополнительные юниты на доступный им доход. Игра заканчивается, если уничтожены все юниты соперника, или захвачено 6 секторов.
Все вышеописанное представлено на рисунке 2.2.
Рисунок 2.2 — Жизненный цикл программы
C1 – Запуск игры
C2 – Cоздание игрового поля
С3 – Создание юнитов
С4 – Проверка состояния объектов
С5 – Отрисовка состояния объектов
С6 – Обновление состояния объектов
С7 – Уничтожение юнита
С8 – Создание дополнительных юнитов
С9 – Завершение игры
2.4. Жизненный цикл объекта
Объект класса Attacker создаётся либо при раскрытии сектора, либо при создании дополнительных юнитов в фазе мобилизация, по щелчку левой кнопки мыши. В момент создания объекта устанавливаются такие характеристики как, жизни, огневая мощь, дальность стрельбы, дальность хода. Размещение юнита на соответствующем секторе пользователь должен указать сам. Юнит может перемещаться на определённое количество клеток за ход (зависит от дальности перемещения). Другие юниты препятствуют продвижению объекта. Юнит может стрелять, если в его радиусе стрельбы существует противник. После получения определённого количества повреждений объект должен уничтожиться. Ниже приведён жизненный цикл объекта
Рисунок 2.3 — Жизненный цикл объекта
P1 – Создание объекта
Р2 – Выделение объекта щелчком мыши
Р3 – Ожидание действий
Р4 – Стрельба объекта (проверка радиуса стрельбы, заряда)
Р5 – Передвижение объекта по игровому полю (проверка на возможность передвижения)
Р6 – Погрузка объекта в транспортёр (проверка на возможность погрузки)
Р7 – Выгрузка объекта из транспортёра (проверка на возможность выгрузки)
Р8 – Проверка состояния объекта
Р9 – Уничтожение объекта
2.5. Диаграмма потоков системы
Рисунок 2.4 — Диаграмма потоков состояния “ожидания действия” объекта класса Attacker
F1 – Проверка состояния
F2 – ID клетки, хитпоинты
F3 – Ожидание действия
F4 – ID клетки, дальность хода
F5 – Перемещение
F6 – ID клетки вражеского юнита, огневая мощь, радиус поражения
F7 – Стрельба
F8– ID клетки, дальность хода
F9 – Выгрузка/ погрузка объекта
F10 – ID клетки, хитпоинты
F11 – Проверка состояния
F12 – Текстура объекта, огневая мощь, радиус поражения, дальность хода
На рисунке 2.4 представлена диаграмма потоков состояния «Ожидание действия».
Из архива берутся текстура объекта, огневая мощь, радиус поражения, дальность хода. Для перехода в «ожидание»» из состояния «проверка состояния» поступает информация о текущей ID клетки, количестве жизней.
Из «ожидания действия» в «перемещение» передаются ID клетки, дальность хода. Из состояния «ожидания действия» в состояние «стрельба» передаются ID клетки вражеского юнита, огневая мощь, радиус поражения. Из состояния «ожидания действия» в состояние «погрузка/выгрузка» передаются ID клетки, дальность хода.
2.6. Построение модели состояний
Рисунок 2.5 – Модель состояний
D1 – Создание объекта
D2 – Ожидание (не активен)
D3 – Действие. В данной модели D3 объединяет в себе Р4-P7 состояния из схемы жизненного цикла объекта
D4 – Проверка состояния объекта
D5 – Уничтожение объекта
2.7. Построение информационной модели
Рисунок 2.7 – Информационная модель
3. Программная реализация
3.1 Обоснование выбора языка программирования
Описанная программа разработана на языке C# в среде программирования Visual Studio 2010. Был использован специальный плагин для создания игр XNA Game Studio.
Visual Studio 2010 обеспечивает возможность создания игр на профессиональном уровне, так же на данный момент это одна из самых производительных сред разработки. Язык программирования C# является наследником языков C/C++ и Java, и впитал в себя лучшие черты этих популярных языков программирования. Язык С# лишён проблемных алгоритмов, которые показали свою нестабильность в перечисленных выше языках программирования. В нем удачно сочетаются испытанные средства программирования с самыми последними новшествами, и предоставляется возможность для эффективного написания программ. Это один из самых важных языков программирования XXI века. Он является полностью объектно-ориентированным, мощным языком программирования, поддерживающим практически все виды абстракций объектно-ориентированного программирования. Благодаря своей актуальности на сегодняшний день, язык C# и был выбран. Microsoft XNA — набор инструментов с управляемой средой времени выполнения (.NET), облегчающий разработку и управление компьютерными играми. Благодаря XNA можно создавать принципиально новые игры с высококачественной графикой.
