Разработка игрового приложения на языке высокого уровня с использованием сторонних графических библиотек
Анализ существующих приложений, средств разработки и выбор варианта решения. Решения для создания простых игр и приложений, ориентированы на людей, далеких от программирования. Отладка и тестирование, исправление недочетов, мешающих работе приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 24.06.2018 |
Размер файла | 4,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
[Введите текст]
ОГЛАВЛЕНИЕ
Введение
1. Аналитический обзор
1.1 Обзор и анализ существующих приложений, средств разработки и выбор варианта решения
1.1.1 Обзор приложений
1.1.2 Обзор языков программирования
1.1.3 Обзор интегрированных сред разработки
1.1.4 Обзор графических библиотек
1.1.5 Выбор языка, библиотек и средств разработки
1.1.6 Формирование требований
2. Структура приложения
2.1 Персонажи
2.2 Меню начала игры
2.3 Структура приложения
3. Алгоритмизация и программирование
3.1 Разработка алгоритмов
3.2 Программная реализация
3.2.1 Бесконечный цикл
3.2.2 Анимация
3.2.3 Реализация боевой системы
3.3 Интерфейс
4. Настройка, отладка и тестирование
4.1 Тестирование положения камеры
4.2 Тестирование игровых состояний
4.3 Модульное тестирование
4.4 Тестирование анимации
4.5 Формальная оценка качества приложения
5. Разработка руководства пользователя
5.1 Общее описание
5.2Описание игрового процесса
5.3 Игровой процесс
Заключение
Список использованных источников
Приложение 1
Приложение 2
Приложение 3
Приложение 4
Приложение 5
ВВЕДЕНИЕ
Игровая индустрия на сегодняшний день развивается невероятными темпами и все больше людей направляют свои усилия на работу в данной сфере. Игры в массы начали выпускать еще в прошлом столетии, а сегодня никого не удивляет, что разработка игр иногда занимает гораздо больше времени, чем, например, серьезных офисных пакетов или редакторов мультимедиа.
Вместе с развитием игровой индустрии количество инструментов для разработки, естественно, увеличивалось. На сегодняшний день существует множество решений для создания простых игр и приложений, которые ориентированы на людей, далеких от программирования. Хотя создание игры таким способом занимает гораздо меньше времени и сил, все игры будут иметь некоторые общие черты.
Сегодняшний рынок диктует свои условия, и игры не стали исключением в этом правиле. Большинство продвинутых сред для разработки, доступные по свободной лицензии для физических лиц, в коммерческой разработке теряют свою актуальность, поскольку зачастую возможности среды не позволяют реализовать всё так, как задумано разработчиками.
Вполне естественно, что количество инструментов для разработки игр продолжит расти в будущем, но вне зависимости от инструмента внутри останется та же самая логика. Именно поэтому в данном проекте было решено разработать игру средствами языка программирования и мультимедийных библиотек.
1. АНАЛИТИЧЕСКИЙ ОБЗОР
1.1 Обзор и анализ существующих приложений, средств разработки и выбор варианта решения
1.1.1 Обзор приложений
На начальном этапе разработки следует выбрать жанр игры, поскольку именно он будет устанавливать требования к проекту. В данном проекте был выбран жанр Fightning. Так же, в связи с длительностью и сложностью разработки 3D игр было решено использовать 2D графику.
На сегодняшний день 2D графика считается устаревшей для настольных компьютеров, но довольно популярна на мобильных платформах. На платформе Windows, которая ,в основном, используется на компьютерах и ноутбуках, 2D игры данного жанра достаточно редки, но в каждой существует своя особая механика и сюжет.
Рассмотрим несколько представителей 2D игр для Windows:
Braid
Рисунок. 1 - Загрузочный экран Braid
Braid - платформер-головоломка, одна из немногих инди-игр, ставших по-настоящему популярной. В этой игре главный упор сделан на управление временем. В этой игре нельзя умереть, поскольку при смерти очень легко отмотать время назад, но от этого её сложность не становиться меньше. Хотя поначалу данная игра механикой напоминает клон Mario, все меняется, как только игроку дают возможность поступать со временем как заблагорассудится[1].
Отдельно, стоит сказать, что хотя данная игра выполнена в 2D все уровни прекрасно проработаны, краски яркие, а общее впечатление от визуальной составляющей может превзойти многие 3D игры.
Eufloria
Рисунок 2.- Игровой процесс Eufloria
Данная игра - яркий пример отличной стратегии с продуманным балансом и интересным игровым процессом.
В Eufloria игрок управляет колонией семян, которые путешествуют в космосе от планеты к планете и «озеленяют» их. Цель игры, как и в любой другой стратегии, доминирование на определенной территории. В частности, тут мы можем встретить «зараженные» семена, которые будут уничтожать деревья на всех планетах, до которых доберутся, а так же семена-противники, которые будут пытаться захватить планеты игрока и не дать «зараженным» уничтожить свои[2].
В целом, данная игра производит весьма приятное впечатление. Геймплей простой и интуитивно понятный, картинка красивая, а музыкальное сопровождение достаточно легкое, что позволяет спокойно играть в эту игру людям всех возрастов, до тех пор, пока им импонирует жанр стратегий.
В целом, существует еще множество интересных и красочных игр для ПК, которые, не имея ультрасовременной графики способны надолго завлечь даже самого искушенного геймера. Стоит заметить, что в большинстве своем новые 2D игры для ПК создаются в нескольких основных жанрах, которые принято называть казуальными. К сожалению, игры жанров Action/RPG, выполненные в 2D, в настоящее время практически не встречаются. Такая ситуация вызвана тем, что эти жанры достаточно популярны во всем мире и, так уж совпало, именно для данных жанров лучше всего подходит именно современная графика. Как было сказано в начале, работа с трехмерной графикой достаточно сложна и требует специальной подготовки либо инструментов разработки, таким образом, при разработке данного проекта будем учитывать этот момент и стараться организовать игровые файлы таким образом, чтобы переход на трехмерную графику мог быть выполнен с минимальными затратами.
1.1.2 Обзор языков программирования
В настоящее время существует множество языков программирования, однако, многие из них предназначены для решения узкого круга задач. Рассмотрим несколько языков широкого профиля, которые возможно использовать для текущего проекта.
С++
C++ компилируемый язык программирования общего назначения, сочетает свойства как высокоуровневых, так и низкоуровневых языков программирования. В отличие от языка С данный язык больше направлен на объектно-ориентированное программирование
Язык программирования С++ был создан в начале 1980-х годов, его создатель сотрудник фирмы Bell Laboratories -- Бьёрн Страуструп.
Ранние версии языка С++, известные под именем «Cи с классами», начали появляться с 1980 года. Язык C, будучи базовым языком системы UNIX, на которой работали компьютеры фирмы Bell, является быстрым, многофункциональным и переносимым. Страуструп добавил к нему возможность работы с классами и объектами, тем самым зародив предпосылки нового, основанного на синтаксисе С, языка программирования.
В 1983 году данный язык программирования официально стал называться «язык программирования C++».
В него были добавлены новые возможности: виртуальные функции, перегрузка функций и операторов, ссылки, константы и многое другое.
Язык программирования C++ является свободным, то есть никто не обладает на него правами.
Поскольку при разработке данного языка особое внимание было уделено универсальности, С++ имеет множество спорных моментов, которые, в зависимости от ситуации, могут по-разному себя проявлять. Так, например, возможность низкоуровневой работы с памятью, адресами и портами позволяет хорошо организовать потребление ресурсов приложениями, но так же может стать причиной множества ошибок и неточностей, что в конечном итоге приведет к еще более худшей ситуации, чем если бы такая работа не проводилась вообще.
Таким образом, можно сделать вывод, что данный язык предоставляет множество возможностей для программиста, не доступных в других языках, но взамен требует более высокого уровня подготовки. Наличие множества возможностей, нарушающих принципы типобезопасности приводит к тому, что в С++-программы может легко закрасться трудноуловимая ошибка. Вместо контроля со стороны компилятора разработчики вынуждены придерживаться весьма нетривиальных правил кодирования. По сути эти правила ограничивают С++ рамками некоего более безопасного подъязыка. Большинство проблем типобезопасности С++ унаследовано от С, но важную роль в этом вопросе играет и отказ автора языка от идеи использовать автоматическое управление памятью (например, сборку мусора). Так визитной карточкой С++ стали уязвимости типа "переполнение буфера".
При всех своих недостатках С++ остается одним из самых востребованных языков программирования именно из-за своих чрезвычайно широких возможностей и отсутствием многих ограничений других языков. В частности, в игровой индустрии практически все игры ААА-класса были написаны на С++ или как минимум с его использованием, поскольку оптимизация крайне важна для игровых приложений и именно данный язык способен обеспечить достаточный уровень контроля ресурсов приложения, благодаря возможности работы с конструкциями низкого уровня.
Java
Этот язык программирования был создан в компании Sun на основе языка С++ и был официально представлен в 1995 году. Java - сильно типизированный язык программирования, что позволяет ему избежать множества недостатков, присущих С++. Изначально он разрабатывался для применения в микроконтроллерах бытовых устройств, поскольку для рядовых потребителей гораздо важнее надежность и отказоустойчивость, чем мощность и скорость работы.
Весь код, написанный на Java, транслируются в специальный байт-код, после чего исполняется на виртуальной Java-машине. Это позволяет коду, написанному на Java быть легко переносимым на любые платформы до тех пор, пока для них существуют виртуальные java-машины. Другой важной особенностью Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы, вызывают немедленное прерывание. Однако, такой подход к реализации так же увеличил время выполнения программ в среднем в 2 раза ,а также потребление памяти больше чем в 10 раз по сравнению с С/С++.
В настоящее время язык Java широко применяется для разработки мобильных приложений для ОС Android а так же сетевых приложений. Благодаря строгой типизации порог входя для данного языка намного ниже, чем для С++, а класс решаемых задач хоть и меньше, но достаточно обширен, что делает язык Java таким же популярным как и С++.
C#
Язык программирования «Си шарп» разработан инженерами компании Microsoft и был выпущен вместе с технологией ASP.NET, которая полностью написана на нем, в 2000 году.
Название «Си шарп» (от англ. sharp -- диез) несет «сакральный» смысл. Знак «#» (в музыкальной нотации читается как «диез») означает повышение высоты звука на полтона. С другой стороны, название «C#» получается путем следующей «эволюционной цепочки»: C > C++ > C++++(C#), так как символ «#» можно составить из 4-х знаков «+».
Вследствие технических ограничений на отображение (стандартные шрифты, браузеры и т. д.) и того, что знак диез ? не представлен на стандартной клавиатуре, знак # был выбран для представления знака диез при записи имени языка программирования.
C# реализует все три принципа объектно-ориентированного программирования: инкапсуляцию, наследование и полиморфизм. Кроме того, в нем была реализована автоматическая «сборка мусора», обработки исключений, динамическое связывание.
Как и в случае с языком Java исходный код транслируется и выполняется на виртуальной машине, однако, используемая виртуальная машина способна поддерживать не только код, написанный на С#, но и на других языках программирования. В составе, предварительных версий Microsoft.NET имеются компиляторы языков С++, С#, Visual Basic. Независимые разработчики могут добавлять другие языки, создавая свои компиляторы в IL-код (Intermediate Language -- промежуточный язык, используемый виртуальной машиной .NET). , IL предназначен не для программной интерпретации, а для последующей компиляции в машинный код. Это позволяет достичь существенно большего быстродействия программ. Содержащие IL-код файлы несут достаточно информации для работы оптимизирующего компилятора.
В целом, многие возможности в C# были заимствованы из Java, тем не менее за счет другой виртуальной машины код, написанный на С#, выполняется быстрее, а разработчики имеют более широкие возможности чем в языке Java, но их все еще мало по сравнению с С++.
1.1.3 Обзор интегрированных сред разработки
IDE (Integrated development environment) - интегрированная среда разработки. Включает в себя комплекс программных средств, используемых для разработки ПО. В классическом варианте IDE включает в себя следующие компоненты:
· текстовый редактор,
· компилятор и/или интерпретатор,
· средства автоматизации сборки,
· отладчик.
Некоторые среды предоставляют дополнительные возможности, например: средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования GUI. Многие современные среды разработки также включают браузер классов, инспектор объектов и диаграмму иерархии классов что достаточно полезно при объектно-ориентированном подходе.
Как правило, IDE предназначены для нескольких языков программирования, хотя существуют и те, что предназначены только для одного. По сути, выбор среды разработки в большей степени зависит от желания разработчика или установленных требований компании, чем от реальной необходимости в определенной среде.
IntelliJ IDEA
Одна из популярных сред разработки, которая выпускается в бесплатном и платном вариантах. Отличия же между ними в том, что платная версия имеет поддержку систем контроля версий, ряд дополнительных языков программирования, подсчет покрытия кода и некоторые другие функции.
Первая версия появилась в январе 2001 года и быстро приобрела популярность как первая среда для Java с широким набором интегрированных инструментов для рефакторинга, которые позволяли программистам быстро реорганизовывать исходные тексты программ. Дизайн среды ориентирован на продуктивность работы программистов, позволяя сконцентрироваться на функциональных задачах, в то время как IntelliJ IDEA берёт на себя выполнение рутинных операций.
Интерфейс данной IDE выглядит следующим образом:
Рисунок 3 - Интерфейс IntelliJ IDEA
Данная среда разработки в основном используется Java-программистами, поскольку предоставляет большой набор автоматически создаваемых конструкций (например: геттеры/сеттеры, конструкторы по умолчанию и т.д.).
Сам интерфейс интуитивно понятен, так же присутствует русификация. Данная среда - отличный выбор для разработки на Java и подобных языках программирования. Поскольку IntelliJ IDEA поддерживает более 20 языков программирования, время загрузки самой среды не очень высокое, впрочем этим грешат все большие IDE.
NetBeans
Полностью свободная среда разработки, изначально создаваемая студентами, как IDE для разработки на Java. После нескольких лет разработки права на неё были переданы компании Sun Microsystems, которая впоследствии открыла исходные коды и в настоящий момент проект развивается благодаря большому сообществу.
NetBeans имеет поддержку достаточно большого количества популярных языков программирования, а благодаря возможности добавления модулей, имеется возможность реализовать поддержку практически любого языка программирования.
Работа в данной среде достаточно приятна, благодаря понятному интерфейсу, а так же большому количеству готовых модулей, которые можно скачать с официального сайта. Именно благодаря модулям возможности данной среды могут достаточно сильно расширяться.
Интерфейс выглядит следующим образом:
Рисунок 4. - Интерфейс NetBeans
По итогу данная среда разработки не уступает предыдущей, а те возможности которых нет в стандартной версии могут быть добавлены с помощью дополнительных модулей.
Microsoft Visual Studio
Данная среда разработки, как ясно из названия, была разработана в компании Microsoft. Первая версия данной среды была выпущена в 1997 году, а новые версии продолжают выходить до сих пор.
Поскольку Visual Studio и Windows - продукты одной компании, логично предположить, что данная среда разработки включает в себя не только средства для написания кода на разных языках программирования, но и специальные средства для работы с Windows, облегчающие разработку приложений для данной ОС.
Visual Studio распространяется в нескольких версиях, из которых лишь одна имеет бесплатную лицензию, однако, даже её достаточно для написания сложных приложений. Во всех версиях присутствует поддержка систем контроля версий, редакторы форм, дизайнеры классов и баз данных.
Как и среда NetBeans Visual Studio имеет возможность подключения разного рода плагинов для расширения своих функций. Интерфейс так же достаточно удобен. Выглядит он следующим образом:
Рисунок 5 - Интерфейс Visual Studio
Данная IDE является хорошим выбором для создания приложений на языках С/С++, а так же на языке C#, поскольку данный язык изначально создавался именно фирмой Microsoft.
1.1.4 Обзор графических библиотек
Графические библиотеки значительно облегчают работу с данными мультимедиа, позволяя использовать готовые методы, которые скрывают тонкости реализации, как в прочем и любые дополнительные библиотеки.
Основными графическими библиотеками для работы с 3D являются реализации OpenGL и DirectX, хотя они и позволяют работать с 2D графикой, есть гораздо более простые решения.
Simple DirectMedia Layer
Это свободная кроссплатформенная мультимедийная библиотека, реализующая единый программный интерфейс к графической подсистеме, звуковым устройствам и средствам ввода для широкого спектра платформ. Данная библиотека активно используется при написании кроссплатформенных мультимедийных программ.
SDL API доступно для множества языков, в том числе и для С/С++, Java и С#.
Библиотека состоит из нескольких подсистем, таких как Video, Audio, CD-ROM, Joystick и Timer. В дополнение к этой базовой низкоуровневой функциональности, существует ряд стандартных библиотек, предоставляющих дополнительную функциональность:
· SDL image -- поддержка различных растровых форматов
· SDL mixer -- функции для организации сложного аудио, в основном, сведение звука из нескольких источников
· SDL net -- поддержка сетевых функций
· SDL ttf -- поддержка шрифтов TrueType
· SDL rtf -- отрисовка текста в формате RTF
С помощью данной библиотеки разработано множество коммерческих игр, например: Trine, Elite, «0 A.D.».[3]
Simple and Fast Multimedia Library
свободная кроссплатформенная мультимедийная библиотека. Написана на C++, но доступна также для C, D, Java, Python, Ruby, OCaml, .Net и Go. Представляет собой объектно-ориентированный аналог SDL[4].
Данная библиотека состоит из 5 модулей:
· System -- управление временем и потоками
· Window -- управление окнами и взаимодействием с пользователем.
· Graphics --отображение графических примитивов и изображений.
· Audio --интерфейс для управления звуком.
· Network -- интерфейс для сетевых приложений.
SFML при всей своей простоте позволяет создавать достаточно сложные проекты с использованием 2D графики, и, что не маловажно, имеет возможность работы с OpenGL.
Данная библиотека прекрасно подходит для начинающих разработчиков и людей, которым не нужны сложные средства для работы с 2D графикой, а благодаря объектно-ориентированности пользоваться методами библиотеки гораздо проще, чем SDL.
1.1.5 Выбор языка, библиотек и средств разработки
Грамотный выбор средств разработки на начальном этапе проекта позволяет просчитать возможные трудности и лучше понять концепции всей разрабатываемой системы.
Языком разработки для данного проекта было решено выбрать С++, поскольку данный язык хорошо подходит для написания игровых приложений, благодаря возможности более низкоуровневой работы с памятью, что позволит оптимизировать определенные моменты игры при больших количествах объектов на экране, либо сложных расчетах[5].
Графическая библиотека для данного проекта -SFML, поскольку её методы проще в использовании, чем SDL, возможности такие же, а функциональность является достаточной.
Среда разработки - Visual Studio, поскольку прекрасно подходит для С++ и является удобной и гибкой средой.
1.1.6 Формирование требований
На основании рассмотренных приложений можно составить примерный список требований, которые должны быть реализованы в проекте. Как правило, определенный жанр накладывает и свои собственные требования, поэтому перечислим требования к внутреннему содержанию игры и технические требования к приложению:
1. Игровой процесс не должен прерываться без желания пользователя.
2. При загрузке игры попадаем в игровое меню
3. Персонаж должен иметь уровень здоровья
4. Несколько игровых персонажей
5. Отсчет времени раунда
6. У персонажа должна быть возможность атаковать и защищаться
7. Игра должна ставиться на паузу
8. Ареной служат несколько карт одинаковой планировки
9. Таблица для учета рейтинга
10. Возможность изменить управление персонажем
11. Если здоровье одного из игроков опускается до 0 ему засчитывают поражение в раунде
12. Количество раундов должно быть нечетным
13. Игра должна работать в режиме полного экрана и окна
14. Игра должна соответствовать другим требованиям, перечисленным в техническом задании.
2. СРУКТУРА ПРИЛОЖЕНИЯ
Каждое игровое приложение, использующее графические библиотеки, требует достаточно большое количество разнообразных библиотек, необходимых для работы определенных модулей, а так же не стоит забывать о файлах, необходимых для самой IDE, в которой создается проект.
Так же важно определить какие составляющие будут у игры: персонажи, окружение, интерфейсы.
2.1 Персонажи
Для полноценной игры в проектах жанра Fightning понадобится несколько персонажей, минимум двое.
Определим основные действия, которые должен совершать персонаж, для подбора необходимых анимаций и функций.
1. Перемещение. Персонаж должен иметь возможность перемещаться по арене. Влево и вправо, приседать и прыгать
2. Атака. Каждый персонаж должен иметь возможность проводить простую атаку.
3. Защита. При нажатии на определенную кнопку персонаж должен блокировать урон.
На основе данных требований выберем спрайты для анимации:
1. Перемещение Влево и вправо (рис.6)
Рисунок 6 - спрайты перемещения персонажа
2. Атака (рис.7)
Рисунок.7 - спрайты атаки персонажа
3.Прыжок (рис.8)
Рисунок 8 - спрайты прыжка персонажа
4. Защита (рис.9)
Рисунок 9 - Защитная стойка персонажа
2.2 Меню начала игры
Большого количества пунктов меню игры данного жанра не требуют, поэтому добавим в меню 3 кнопки:
1. Начать игру. Данная кнопка запускает раунд.
2. Управление. Здесь можно посмотреть информацию об управлении
3. Выход. При нажатии на эту кнопку выполнение приложения завершается.
На рисунке 10 можно увидеть внешний вид меню.
Рисунок 10 - Начальное меню
Теперь, зная какие именно функции необходимо реализовать, мы можем приступить к разработке программной части игры.
2.3 Структура приложения
Для реализации всех заявленных требований, понадобиться создать некоторое количество классов.
Главными классами в нашем приложении будут классы игрока и арены. Первый класс отвечает за создание персонажей и их взаимодействие друг с другом. Второй класс служит для создания арены и выполняет функции начальной расстановки игроков. Благодаря классу арены мы имеем возможность задать начальные координаты для обоих игроков и легко изменять арену по своему выбору.
Класс игрока реализован в файле Player.cpp и объявлен в файле Player.h. В данном классе должны быть следующие методы:
· Control.
Данный метод отвечает за обработку пользовательского ввода и изменяет состояния игрока в зависимости от выбора игрока.
· Update
Этот метод вызывается каждый проход главного цикла и призван обновлять состояние игрока. Так же в этом методе вызываются все остальные методы, используемые для изменения состояния персонажа.
· Attack
В данном методе реализуется атака персонажа и происходит выбор спрайтов для отрисовки атаки.
· Animation
Метод реализует выбор спрайтов для отрисовки и используется во всех других методах, вызывающих изменение состояния игрока, поскольку каждое состояние требует своей анимации.
Каждый из методов реализует свою часть функционала, вместе обеспечивая нормальную работу класса игрока.
Класс арены будет реализован с помощью библиотеки TinyXML. Методы класса арены предназначены для считывания карты из файла формата tsx. Данный формат - один из вариантов реализации формата xml и имеет ту же самую структуру.
Для нормальной работы класса арены нужно добавить несколько структур данных:
· Объект.
Данная структура содержит несколько полей, задающих:
· Номер свойства объекта в списке
· Имя объекта
· Координаты объекта
· Ассоциативный массив объектов
Все эти поля предназначены для хранения объектов, которые мы задаем в XML-файле уровня.
· Слой
Эта небольшая структура данных содержит всего 2 поля:
· Прозрачность слоя
· Массив тайлов карты
Эта структура предназначена для упрощения работы со слоями карты, позволяя легко отрисовывать спрайты в нужной последовательности.
Сам класс арены будет иметь достаточно большое количество полей и методов. Рассмотрим методы, необходимые данному классу:
· Загрузка из файла.
Данный метод будет возвращать false, если загрузить карту не удалось и true - в противном случае. Данный метод необходим для исключения случаев обращения к несуществующим элементам.
· Получить объект
Данный метод, как ясно из названия, должен вернуть объект с карты. Такими объектами в нашем случае будут начальные положения игроков, стены и пол арены. Так же в добавок к этому методу необходимо реализовать еще 2 метода, котрые будут возвращать массив выбранных или всех объектов
· Отрисовать
Данный метод будет отвечать за отображение арены на экране.
· Получить размер тайла
Этот метод необходим, поскольку арены сделаны на основе разных наборов тайлов, с разными размерами. При спрайтовой анимации крайне важно знать размеры тайлов и придерживаться их при расчетах.
Данных методов будет достаточно для выполнения установленных нами требований. Выяснив необходимые методы, можно выделить и основные поля класса:
· Ширина и высота тайл-сета и тайла
Как упоминалось ранее, данные значения очень важны для корректного отображения карты
· Номер первого тайла
Необходим, поскольку при создании карты может быть несколько слоев, которые не будут нарисованы, вследствие чего возникает необходимость точно знать, откуда начинать отрисовку
· Текстура карты
В данном поле будет храниться картинка, из которой формируется карта
· Массив объектов
Тут будут храниться объекты, которые не будут отрисованы, но будут присутствовать на карте (например, границы арены)
· Массив слоев
Нужен для правильного считывания карты, поскольку в XML-файле тайлы расположены линейно.
Теперь, зная основные необходимые нам детали можно приступить к разработке программной части.
3. АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
3.1 Разработка алгоритмов
Основные алгоритмы, требующиеся для реализации игры достаточно просты, а все сложности мультимедийная библиотека берет на себя. Главной задачей является определение механизмов взаимодействия пользователя с игрой и объектов игры друг с другом.
Основным компонентом игры будет бесконечный цикл[6], в котором будет происходить вызов всех функций-обработчиков, подсчет времени и другие действия. Его основные стадии представлены на рисунке 11.
Рисунок 11 - Схема игрового цикла
Поскольку вся игра построена на спрайтах, стоит уделить внимение и алгоритму отрисовки объектов и их анимации.
Для того, чтобы нарисовать объект, мы должны выполнить несколько шагов: создать объект класса Image и загрузить в него изображение тайлсета, далее передать этот объект в объект класса Texture, что в свою очередь позволит передать в объект класса Sprite нужную нам часть тайлсета.
Рассмотрим создание анимации на примере анимации перемещения персонажа
Поскольку мы будем обновлять кадры в главном игровом цикле, необходимо создать объекту игрока функцию обновления (update). Далее, передавая в функцию update текущее время мы можем использовать его для привязки анимации ко времени.
Останется лишь передать в функцию класса Sprite новые координаты прямоугольника, который необходимо отрисовать и обнулить переменную, отвечающую за время, если она превысит количество спрайтов в строке по которой должна пройти.
Для реализации боевой системы воспользуемся алгоритмом, схематично представленном на рисунке 12.
Рисунок. 12 - Схема алгоритма боевой системы
3.2 Программная реализация
При разработке алгоритмов для данной игры, особое внимание следует уделить отрисовке спрайтов, поскольку именно за счет спрайтов мы сможем организовывать взаимодействие персонажей.
3.2.1 Бесконечный цикл
Используем бесконечный цикл для выполнения действий, необходимых на каждом кадре.
Можно выделить 3 основных действия, которые будут выполняться:
· Проверка пользовательского ввода
· Выполнение игровой логики
· Рисование нового кадра
Так же, для того, чтобы отвязать игру от скорости процессора, создадим переменную времени, которая будет отвечать за обновление экрана и игровое время.
Приведем код игрового цикла в приложении 1.
Как видно из представленного фрагмента программы: главный цикл выполняется постоянно, пока не совершиться событие закрытия. Данное событие может быть вызвано закрытием окна или нажатием клавиши «выход».
3.2.2 Анимация
Одним из важных пунктов, является анимация персонажей, иначе нормальной игры не получиться. В нашем случае, анимация создается с помощью спрайтов, т.е. последовательного переключения картинок с разными позами персонажа. Такой же принцип используется при киносъёмке[7].
Набор спрайтов для анимации персонажа уже был выбран в предыдущих пунктах, поэтому теперь остается лишь программная часть анимации. В выбранной нами мультимедийной библиотеке - SFML - есть удобный способ сделать это.
Поскольку в главном цикле мы вынуждены постоянно обновлять игровую логику, вызовом функции update у объекта игрока, то анимация может быть так же вызвана внутри данной функции.
Приведем код, необходимый для анимации персонажа в приложении 2.
Как видно из кода функции, мы передаем в нее переменную, отвечающую за время, которую получаем из главного цикла. Далее, в зависимости от текущего состояния игрока производиться выбор анимации.
При каждом вызове функции переменная времени округляется до целого числа, после чего координаты отрисовки спрайта на тайлсете меняются по оси ОХ в правую сторону на величину, равную размерам спрайта.
3.2.3 Реализация боевой системы
Для реализации боевой системы был создан отдельный класс атаки. Объекты данного класса создаются в момент атаки и уничтожаются после, соответственно, при пересечении спрайта атаки со спрайтом персонажа в зависимости от того, находится ли он в состоянии «блок» либо отнимаются очки здоровья, либо объект просто уничтожается[8].
Приведем пример использования кода для данной части приложения. Код ниже отвечает за распознавание нажатия клавиши А (английская раскладка), и, если такое событие происходит, запускает анимацию атаки.
Переменная lastside отвечает за сторону в которую смотрит персонаж в настоящее время. В зависимости от текущего направления используются разные анимации в объекте класса Attack.
Пример реализации представлен в приложении 3.
Для расчета столкновения спрайта персонажа со спрайтом атаки используем функцию, встроенную в SFML intersects(). Для проверки пересечения пройдемся по объектам на карте и если имя объекта “Attack” то действия выполнятся, в противном случае, атака промахнулась.
Код приведен в приложении 4.
Реализация остальных функций достаточно тривиальна и не требует особых пояснений
3.3 Интерфейс
Интерфейс является одной из важных составляющих любой игры, поэтому разрабатывается на начальных этапах, чтобы соответствовать стилистике игры и её принципам[9].
Поскольку в предыдущих частях уже были выбраны основные элементы интерфейса, осталось лишь придумать интерфейс для основного окна игры.
В любой игре жанра Fightning используется практически идентичный интерфейс. Схема представлена на рисунке ниже.
Рисунок.13 - Пример интерфейса игры Soul Calibur V
1 - Шкалы здоровья обоих игроков;2 - Счетчик времени до конца раунда; 3 - Счет по раундам и их общее количество; 4 - Дополнительные характеристики персонажа; 5 - Дополнительная информация о комбо и ударах
Создадим следующий интерфейс, согласно рисунку 14:
Рисунок 14 - шаблон интерфеейса
Будем показывать
· количество жизней персонажей
· раунд,
· время до конца раунда
Для отрисовки полосок жизни будем использовать следующий код:
void Player::update_hp(bool flag, float value)
{
if (flag == true)
{
if (value < 0)
text1.add(getPosition(), -10, 0, intToString(value),
sf::Color(204, 0, 0));
else
text1.add(getPosition(), -30, 0, "+" + intToString(value),
sf::Color(0, 204, 0));
}
}
Таким образом, мы можем получить изображение полосы здоровья, которое будет изменяться в зависимости от текущего значения переменной value.
Отображение времени сделаем через строковую переменную, которая получает значение времени
std::ostringstream time;
time << Clock.getSeconds();
text.setString(time.str());
text.setPosition(view.getCenter().x + 165, view.getCenter().y - 200);
window.draw(text);
В итоге, получаем результат в соответствии с рисунком 15:
Рисунок 15 - Пример интерфейса главного окна игры
4. НАСТРОЙКА, ОТЛАДКА И ТЕСТИРОВАНИЕ
В данном проекте тестирование и отладка производились по ходу разработки, что позволило после разработки каждого из модулей производить только тестирование их взаимодействий.
4.1 Тестирование положения камеры
Файтинг - игра для двух игроков и важным моментом является то, что оба игрока должны постоянно находиться в области видимости.
За камеру в проекте отвечает отдельный модуль - view - устанавливающий все взаимодействия с камерой. Для тестирования были выбраны следующие требования:
-Камера не должна уходить за край арены в обе стороны.
-Оба игрока должны постоянно находиться на экране.
-Если игроки расходятся, то они должны упираться в край зоны видимости.
-Центр поля видимости должен быть расположен между игроками, за исключением случаев, когда игроки находятся у края арены.
Тестирование проводилось по ходу разработки функционала, поэтому после каждого изменения было легко выявить несоответствия с требованиями.
После реализации данного функционала несоответствий выявлено не было, что означает достаточную работоспособность модуля.
4.2 Тестирование игровых состояний
Архитектура приложения позволяет выделить несколько состояний игрового процесса, между которыми переходит приложение, определим их:
-Начальное меню. В данном состоянии пользователь должен видеть перед собой меню, в котором присутствуют следующие элементы:
· Начать игру. После выбора данной опции запускается главный цикл игры и начинается весь игровой процесс.
· Управление. После выбора данного пункта меню пользователь переходит в раздел, где сможет ознакомиться с управлением игрой
· Выход. Данный пункт меню закрывает игру и прекращает игровой процесс
Критериями оценки работоспособности в данном случае являются работающие кнопки и переход приложения в выбранное состояние.
После тестирования проблем не обнаружено. Все кнопки работают должным образом и переключают состояние приложения в нужное положение.
-Главный игровой цикл. В этом состоянии происходит основной игровой процесс. Взаимодействие пользователя с игрой осуществляется на всем протяжении работы главного цикла. Сам главный цикл так же можно разделить на составляющие части:
· Обработка пользовательского ввода.
На данной стадии обрабатывается нажатие клавиш пользователем, и выбираются механизмы игровой логики для исполнения.
· Исполнение игровой логики.
На данном шаге исполняются алгоритмы, выбранные в зависимости от действий пользователя и исходных установок приложения.
· Отрисовка следующего кадра.
На этом этапе вызываются команды отрисовки игровых объектов и карты, в порядке, установленном на предыдущем шаге.
Тестирование главного игрового цикла - сложный процесс, поскольку в нем происходит вызов практически всех модулей, которые есть в игре. Заменим тестирование полного цикла тестированием модулей, которые в нем вызываются и протестируем их позже.
-Меню выбора персонажа. Данное состояние - начало главного игрового цикла. В нем игроки выбирают персонажей, которыми хотели бы сражаться и арену на которой будет происходить бой. Функционал данного состояния не слишком велик, но необходим для нормального игрового процесса.
В нашем случае были протестированы следующие моменты, которые могут возникнуть по ходу игрового процесса:
· Каждый из игроков может выбрать одного и того же персонажа.
· Игрок, первым выбравший персонажа, выбирает арену для сражения.
· По умолчанию можно выбрать случайного героя и случайную арену.
· Пока хотя бы один игрок не выбрал персонажа, запрещается выбирать арену и начинать игру.
· После выбора персонажей и арены запускается начало первого раунда, счетчик времени, здоровье персонажей выставляется равным 100%.
После тестирования данных функций проблем обнаружено не было. Игроки получают управление выбранными персонажами и сражаются на выбранной арене.
-Пауза. При переходе в состояние паузы игровой процесс приостанавливается. Время раунда замораживается, пользовательский ввод доступен только для клавиш выбора пункта меню.
В меню паузы доступны следующие опции:
· Продолжить игру.
После выбора данного пункта игра продолжается, счетчик времени начинает снова уменьшаться, а игроки получают управление над персонажами
· Выйти в главное меню
Выбрав этот пункт меню, игрок попадает в главное меню игры, где может начать новую игру, просмотреть управление или выйти из игры.
· Выйти из игры
Выбор данного пункта должен немедленно завершить игру, предварительно запросив подтверждение выхода.
При тестировании состояния паузы главными моментами для тестирования стали счетчики времени и отключение управления.
В ходе тестирования недостатков выявлено не было, счетчики замораживаются, а пользовательский ввод блокируется, как и было задумано.
4.3 Модульное тестирование
При модульном тестировании проверялось взаимодействие классов приложения между собой.
Особое внимание уделялось классам игрока, атаки и арены их взаимодействию между собой. В данном проекте класс игрока должен создавать всего 2 объекта, но с разным управлением, что было реализовано с помощью передачи в конструктор дополнительного параметра, отвечающего за управление. Остальные свойства класса идентичны для обоих игроков.
При тестировании класса игрока были замечены недоработки, делающие класс невозможным в использовании, при количестве персонажей больше двух. Поскольку в требованиях к игре мы установили, что персонажей будет всего двое, данные недоработки можно не учитывать при дальнейшей разработке. Основные методы класса работают, согласно предъявляемым к ним требованиям.
Класс атаки представляет собой отдельный класс, отвечающий за создание атакующих приемов персонажей, с дальностью действия больше, чем в непосредственной близости от персонажа (например, выстрелы и т.д.). Главные требования, предъявляемые к классу при тестировании:
· Создание объекта атаки со стороны фронта персонажа
· Уничтожение объекта, после столкновения с игроком, или после преодоления атакой максимальной дистанции.
Тестирование функционала класса и его взаимодействие с классом игрока тестировалось в течение всего периода разработки, поэтому проблем при тестировании не было выявлено.
Класс арена представляет собой модуль, содержащий методы для загрузки арены из файла XML с помощью сторонней библиотеки TinyXML. При тестировании проверялось взаимодействие библиотеки с классом арены. Поскольку класс арены использует множество методов библиотеки, тестирование в основном сводилось к проверке корректной подгрузки карты уровня.
При тестировании критических ошибок выявлено не было, мелкие недочеты были устранены в ходе разработки.
4.4 Тестирование анимации
Одна из особенностей реализации данной игры - спрайтовые анимации. Каждое действие, которое совершает персонаж, реализовано с помощью последовательности спрайтов, задаваемых в классе игрока.
При тестировании проверялась корректность отрисовки спрайтов в различных ситуациях. Данная часть проекта - одна из самых объемных, поскольку каждый кадр анимации должен быть отрисован своей командой.
В первую очередь проверялись:
· Передвижение персонажа
· Атака
· Прыжки
По результатам тестирования анимаций грубых ошибок не выявлено. Мелкие недочеты, вызванные неточными координатами, были исправлены по ходу разработки. В дальнейшем проблем обнаружено не было.
4.5 Формальная оценка качества приложения
Игровые приложения - достаточно сложный в оценке вид программных продуктов. При оценке игры недостаточно оценить только функционал или правильность работы функций. Каждая игра - своеобразный творческий продукт, который нужно оценивать по многим критериям.
В качестве методологии оценки была выбрана система, предложенная на сайте «Компьютерные игры как искусство»[10]. По данной системе оценок предлагается оценить игру по трем критериям:
· Оформление (графика, звук, интерфейс, стиль)
· Механика (геймплей - количество и качество игровых возможностей)
· Содержание (сюжет, проработанность персонажей, мира)
После этого оценка дополняется критериями, применяемыми к каждому жанру в отдельности. У каждого из жанров выделяются основные составляющие, которые в достаточной степени описывают суть происходящего в игре. Для игр жанра файтинг предлагается выбрать две основных составляющих:
· Уничтожение
· Соревнование
Каждый из основных и дополнительных критериев оценивается по десятибалльной шкале. Окончательная оценка по трем основным критериям выставляется на основе средних оценок её составляющих.
Теперь можно приступить к оценке игры по выбранной методике.
Занесем данные в Таблицу 1 для того, чтобы яснее понимать все составляющие оценки.
Таблица 1 - Общие критерии оценки
4,1 |
Оформление: 3,6/10 |
Графика: 4/10 |
Музыка: 4/10 |
Интерфейс: 3/10 |
|
Механика: 4,6/10 |
Геймплей: 8/10 |
Режимы: 2/10 |
Сложность: 4/10 |
||
Содержание: 4/10 |
Сюжет: 2/10 |
Персонажи: 6/10 |
Новизна: 4/10 |
Далее, остается оценить жанровую составляющую, для получения окончательной оценки.
Уничтожение - с помощью данного критерия можно оценить, насколько в игре реализованы возможности для ведения боя и прочих действий, связанных с данным направлением.
Особенности реализации проекта не позволяют хорошо развить данное направление, поскольку реализация каждой новой атаки персонажа достаточно сложна. На текущем этапе данный критерий можно оценить на 7 из 10, согласно Приложению 5.
Соревнование - данный критерий, соответственно своему названию, отражает то, насколько интересно в этой игре соревноваться с другими игроками. Сам жанр выбранной игры подразумевает соревнование между двумя игроками, и данному вопросу было уделено достаточное внимание при разработке. По данному критерию поставим оценку 8 из 10, согласно Приложению 5.
Итоговые оценки:
Общая оценка игры - 4.1 балл.
Оценка жанровой составляющей - 7.5 баллов.
5. РАЗРАБОТКА РУКОВОДСТВА ПОЛЬЗОВАТЕЛЯ
Игры жанра файтинг - игры, в которых первое место уделяется взаимодействию игроков между собой. Именно поэтому в данную игру лучше всего играть совместно с другими игроками.
5.1 Общее описание
Программа представляет собой игровое приложение для платформы Windows и может запускаться только на ней.
Требования к аппаратному обеспечению достаточно низкие, в связи с использованием 2D графики, но из-за неоптимизированных алгоритмов системные требования чуть выше, чем у других приложений, подобного жанра.
Игра предназначена для совместного времяпрепровождения. Основной аудиторией являются люди, любящие соревнования. Игры данного жанра позволяют проводить соревнования между большим количеством игроков. В противовес этому, одиночная игра является менее интересной, поскольку нет чувства соревнования.
5.2 Описание игрового процесса
Игра начинается с выбора персонажей обоими игроками. После того, как выбраны оба персонажа, происходит выбор арены для схватки. Стоит заметить, что арену выбирает игрок, первым выбравший персонажа.
Когда персонажи и арена выбраны, начинается игра. Суть игры в том, чтобы довести жизни противника до 0, атакуя его и блокируя его атаки, не дать уменьшить свои жизни.
Каждый раунд длиться не дольше минуты. По окончанию времени выигрывает тот игрок, у которого осталось больше здоровья. Если здоровье одного из игроков упадет в ноль до конца времени раунда, то игрок, имеющий положительное количество здоровья, становиться победителем раунда.
В каждом новом раунде здоровье игроков составляет 100%. Количество раундов всегда нечетное, но не более пяти. У каждого игрока есть несколько вариантов атаки, которые наносят разный урон. Как правило, в играх подобного жанра предполагается некоторый ИИ для одиночной игры. В данном проекте, в следствие ограниченности времени и средств для разработки, от него было решено отказаться и сделать игру полностью многопользовательской.
5.3 Игровой процесс
При запуске приложения игрок попадает в главное меню, описанное в пункте 2.2 данной записки. Далее имеется возможность ознакомиться с управлением, начать игру или выйти из неё.
При выборе пункта «Новая игра» игрок попадает в меню выбора персонажа, где может, используя клавиши управления (для каждого из игроков они свои) выбрать персонажа по иконке.
Иконка персонажа содержит минимум информации, такой как:
· Портрет персонажа
· Имя персонажа
· Основные характеристики (скорость, показатель атаки)
Далее происходит выбор арены. Сама по себе арена никакой смысловой нагрузки не несет и выступает, по сути, фоном для сражений. По умолчанию селектор расположен на выборе случайной арены. Для выбора определенной арены необходимо с помощью клавиш передвижения персонажа выбрать арену. Как мы помним из предыдущих пунктов, арену выбирает игрок, первым выбравший персонажа.
После всех, описанных выше действий, начинается бой. Управление персонажами осуществляется по разному обоими игроками. Так для первого игрока:
· Перемещение осуществляется клавишами со стрелками
· Прыжок и атака доступны на клавиши Space и Num5 соответственно.
· Блок выполняется нажатием на кнопку Num1
С управлением для второго игрока можно ознакомиться, запустив приложение и выбрав пункт «Управление».
По умолчанию раунд заканчивается через 60 секунд или после того, как у одного из игроков здоровье становиться равным 0. Для победы в сражении, по умолчанию, необходимо выиграть 2 раунда.
После победы одного из игроков можно продолжить сражение теми же персонажами или выбрать новых. На данный момент в игре реализовано только 2 персонажа, поэтому выбор не велик, но существует.
Поскольку игры данного жанра не имеют четко обозначенной концовки, они могут быть завершены в любой момент времени. Для выхода из игры можно воспользоваться:
ы Главным меню, выбрав пункт «Выход»
ы Меню паузы, выбрав пункт «выход из игры»
ы Средствами ОС Windows, завершив процесс через диспетчер задач
ы Если игра ведется в окне, то можно закрыть окно, кликнув на пиктограмму закрытия окна, что корректно обрабатывается программой, как завершение её работы.
ЗАКЛЮЧЕНИЕ
В процессе работы над ВКР были рассмотрены языки программирования, используемые для написания игровых приложений, среды разработки и мультимедийные библиотеки, используемые в тех же целях. Написано игровое приложение, в соответствии с выбранными требованиями. Произведена его отладка и тестирование, в ходе которых были обнаружены и исправлены мелкие недочеты, мешающие работе приложения. Был разработан интерфейс взаимодействия с пользователем и написано руководство по использованию программы по её прямому назначению, произведена формальная оценка качества разработанной игры.
Поскольку библиотека SFML, используемая при разработке данной игры является кроссплатформенной, в дальнейшем имеется возможность перенести данный проект на другие платформы, незначительно изменив код приложения. приложение игра программирование тестирование
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Braid Game [Электронный ресурс]: //Braid Game- Режим доступа: http://braid-game.com
2. Eufloria [Электронный ресурс]: //Eufloria Game - Режим доступа: http://www.eufloria-game.com
3. SDL [Электронный ресурс]: Википедия/Simple Direct Media Layer - Режим доступа: https://ru.wikipedia.org/wiki/Simple_DirectMedia_Layer
4. Tutorials for SFML 2.5 [Электронный ресурс]: //SFML-Dev/Tutorials - Режим доступа: https://www.sfml-dev.org/tutorials/2.5
5. Лафоре ,Р. Объектно-ориентированное программирование в С++ [Текст] / Р. Лафоре - 4е издание - Москва: Питер, 2004. - 928 с.
6. Game Pragramming Patterns [Электронный ресурс]: //GameProgramming Patterns, сайт - Режим доступа: http://gameprogrammingpatterns.com
7. Спрайтовая анимация [Электронный ресурс]: Компьютерная графика, сайт - Режим доступа: http://grafika.me/node/638
8. HattoriHandzo, Основы боевой системы в играх [Электронный ресурс]: //Хабрахабр, сайт - Режим доступа: https://habr.com/post/253697
9. Боголюбов, Л. Принципы и основы UX-дизайна [Электронный ресурс]: //Live Typing, сайт - Режим доступа: https://livetyping.com/ru/blog/printsipi-i-osnovy-ux-dizajna
10. Киризлеев, А. Система оценок компьютерных игр. [Электронный ресурс]: //GameIsArt, сайт - Режим доступа: http://gamesisart.ru/theory _game_ score_2.html
ПРИЛОЖЕНИЕ 1
исходный код главного игрового цикла
while (window.isOpen())
{
float time = clock.getElapsedTime().asMicroseconds();
clock.restart();
time = time / 800;
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
p.update(time, event);
p2.update(time, event);
window.setView(view);
window.clear(Color(77, 83, 140));
lvl.Draw(window);//рисуем новую карту
window.draw(backSprite);
window.draw(p.sprite);
window.draw(p2.sprite);
window.display();
}
return 0;
...Подобные документы
Рассмотрение игр, схожих по жанру и модели распространения с разрабатываемым приложением. Выбор среды разработки и сторонних библиотек. Проектирование интерфейса и подготовка графических материалов приложения. Особенности введения в игру микротрансакций.
дипломная работа [3,1 M], добавлен 18.11.2017Структура Android-приложений. Особенности игрового движка. Алгоритмизация и программирование. Список игровых состояний. Настройка, отладка и тестирование программы. Разработка руководства пользователя. Тестирование инсталляции и отображения элементов.
дипломная работа [4,5 M], добавлен 19.01.2017Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.
курсовая работа [867,9 K], добавлен 16.07.2013Проектирование, кодирование и отладка службы Windows: "Контроль приложений", осуществляющей контроль набора приложений и управление ими; разработка приложения, управляющего этой службой. Взаимодействие службы и приложения; тестирование и сопровождение.
курсовая работа [1,1 M], добавлен 22.05.2013Описание языков программирования высокого уровня. Стандартные структуры данных, обзор принципов структурного программирования. Построение математической модели и выбор структуры данных для решения задачи. Тестирование и отладка программного кода.
курсовая работа [1,3 M], добавлен 05.12.2020Изучение существующих подходов к использованию компьютерных игр в образовательном процессе. Разработка и реализация проекта игрового обучающего приложения на мобильной платформе. Выбор платформы и средств реализации игрового обучающего приложения.
дипломная работа [3,4 M], добавлен 12.08.2017Преимущества операционной системы Android. Проектирование интерфейса приложений. Визуальные редакторы и средства кроссплатформенной разработки. Оптимизация игрового процесса, выбор фреймворка и библиотек. Классификация и характеристика игр по жанрам.
дипломная работа [2,6 M], добавлен 10.07.2017Вопросы программирования в Maple версий 6-11 и разработка приложений. Рассматривает эффективные приемы программирования и разработки приложений для многих разделов техники, математики, физики, для решения которых пакет не имеет стандартных средств.
монография [4,8 M], добавлен 13.03.2008Разработка на языке C++ службы, осуществляющей контроль набора выполняющихся приложений. Проектирование, кодирование, отладка, тестирование и сопровождение службы Windows. Взаимодействие службы и приложения. Интерактивность разрабатываемой службы.
курсовая работа [964,9 K], добавлен 01.06.2013Технология создания многопоточных приложений в современных системах программирования с использованием языка C# в Visual Studio.NET. Разработка алгоритма и структуры программы. Описание и особенности тестирования приложения с разным количеством потоков.
курсовая работа [773,0 K], добавлен 14.03.2013Разработка программного приложения по автоматизированному учету поступающего довольствия. Описание среды программирования. Тестирование и отладка приложения. Анализ результатов решения. Инструкция пользователю. Требования к техническому обеспечению.
дипломная работа [946,0 K], добавлен 18.07.2014Этапы разработки и отладки приложения "Помощь почтальону". Составление сопроводительной документации. Выбор средств и методов программирования. Анализ проектных данных. Особенности создания базы данных, СУБД. Тестирование созданного программного продукта.
контрольная работа [2,5 M], добавлен 17.12.2014Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.
курсовая работа [987,1 K], добавлен 27.06.2019Реализация выбора в языках высокого уровня, использование сложных типов. Формат оператора выбора в языке Pascal. Изображение оператора варианта на блок-схеме. Понятие массива и способы их вводов. Описание компонентов приложения и программного кода.
курсовая работа [585,6 K], добавлен 17.08.2013Структура базы данных web-приложения предприятия ООО "Седово"; автоматизация процесса передачи документов. Разработка технического задания, проектирование БД, функциональное назначение web-приложений, тестирование, отладка и размещение в сети Internet.
дипломная работа [5,3 M], добавлен 24.06.2011Разработка программного решения по созданию мобильного приложения. Изучение технологий для разработки приложений. Анализ работы торговых агентов. Обоснование выбора языка программирования. Проектирование интерфейса структуры и верстка, листинг программы.
дипломная работа [2,2 M], добавлен 08.06.2017Теоретические основы разработки Windows-приложений с использованием библиотеки MFC. Создание приложения с помощью Visual C++. Описание логической структуры приложения. Установка и запуск программы. Входные и выходные данные. Преимущество MFC библиотек.
курсовая работа [563,2 K], добавлен 21.06.2011Разработка программы создания заметок в любом месте компьютера. Выбор технологии, языка и среды разработки приложения. Описание основных алгоритмов работы программного обеспечения. Проектирование пользовательского интерфейса. Выбор стратегии тестирования.
отчет по практике [700,5 K], добавлен 24.11.2014Исследование возможностей и областей использования языка программирования JavaScript. Сравнительный анализ языков программирования JavaScript и PHP. Разработка интерактивного Web-приложения на примере теста по теме "Программирование на языке Delphi".
практическая работа [26,0 K], добавлен 04.02.2015Визуальная разработка приложений баз данных. Характеристика визуальных компонентов среды разработки Builder 6.0, используемых в данном приложении. Программная реализация приложения, разработка форм и вкладок. Тестирование приложения, листинг программы.
курсовая работа [3,1 M], добавлен 28.03.2011