Разработка мобильного приложения

Разработка мобильного приложения-игры в жанре аркадного симулятора. Сравнение аналогов приложения, их преимущества и недостатки. Архитектура приложения, внедрение внешнего дизайна. Средства разработки, программный код, тестирование, устранение неполадок.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 03.06.2023
Размер файла 6,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.Allbest.Ru/

Курсовая работа

Тема:

Разработка мобильного приложения

Реферат

Работа изложена на 37 страницах машинописного текста. Пояснительная записка по курсовой работе содержит 26 рисунков, 2 таблицы, 1 приложение, 9 источников.

Мобильное приложение, мобильные игры, разработка, аркадный симулятор, среда разработки unity, язык программирования С#

Объектом исследования курсовой работы является мобильное приложение.

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

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

Задачи курсовой работы:

- найти и сравнить аналоги разрабатываемого приложения, выявить преимущества и недостатки;

- разработать архитектуру приложения;

- разработать и внедрить внешний вид - дизайн приложения;

- написать программный код приложения;

- провести тестирование и устранить неполадки в работе приложения;

- составить руководство пользователя.

В соответствии с целью и необходимыми для решения задачами будет разработано мобильное приложение-игра в жанре аркадного симулятора.

Содержание

  • Введение
  • 1. Описательная часть
    • 1.1 Назначение в области применения
    • 1.2 Содержательная формулировка задачи
    • 1.3 Поиск аналогов
  • 2. Реализация приложения
    • 2.1 Описание средств разработки и программирования
    • 2.2 Архитектура
    • 2.3 Разработка приложения
    • 2.4 Руководство пользователя
  • Заключение
  • Список используемой литературы
  • Приложение

Введение

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

С приходом мобильных телефонов и смартфонов люди стали уделять им много внимания и времени, а благодаря развитию разработки мобильных приложений у людей появилась возможность решать различные задачи: математические примеры, общение и обмен файлами с другими людьми, просмотр видеороликов, просмотр развлекательного контента, игры и многое другое. На данный момент рынок мобильных игр развивается стремительно, на что положительно влияет развитие программирования и разработки приложений в целом [1], из чего можно сделать вывод, что спрос на мобильные игры также увеличивается.

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

Игры-симуляторы, несмотря на свою простоту, помогают игроку оторваться от своей жизни и отыграть разнообразные роли: выживший в авиакатастрофе, разработчик видеоигр, владелец крупного бизнеса, мэр мегаполиса.

На данный момент на рынке практически нет игр-симуляторов, которые бы также содержали такие элементы аркадной игры, как отсутствие гринд-барьера (то есть, весь игровой контент доступен сразу), беспрерывный геймплей, поэтому ввиду отсутствия большой конкуренции можно разработать аркадный симулятор.

Целью курсовой работы является разработка мобильного приложения-игры в жанре аркадный симулятор. Задачи курсовой работы:

- найти и сравнить аналоги разрабатываемого приложения, выявить преимущества и недостатки;

- разработать архитектуру приложения;

- разработать и внедрить внешний вид - дизайн приложения;

- написать программный код приложения;

- составить руководство пользователя.

В заключении курсовой работы должно быть разработано мобильное приложение-игра в жанре аркадного симулятора.

1. Описательная часть

1.1 Назначение в области применения

Аналитическое агентство iKS-Consulting провело всестороннее исследование российского рынка цифровых игр. Вторым по величине сегментом российского рынка цифровых игр является сегмент игр для мобильных устройств [1].

Мобильные игры - разновидность видеоигр, предназначенных для экрана мобильного телефона. От обычных игр отличаются методикой управления (применяется сенсорный экран), специфическим геймплеем, заточенным под проведением в играх небольшого количества времени (обычно в транспорте, метро, во время поездок на и с работы), казуальностью. Большинство таких игр в жанре free to play.

Симуляторы - один из самых масштабных и популярных игровых жанров. Причем не только на PC, но и на мобильных устройствах. В особенности - потому что управление в симуляторах можно легко приспособить под мобильные телефоны, из-за чего на мобильных устройствах может быть даже приятнее играть, чем на компьютерах или консолях [8].

В симуляторы очень легко играть, интересно взаимодействовать с окружением и объектами, а некоторые из них могут быть популярными целые годы. Создать игру жанра симулятор можно практически в любой области: например, симулятор водителя автобуса, пилота самолета, повара или фермера. В данном случае разрабатываемое приложение является симулятором фермера. Задача продукта состоит в том, чтобы пользователь мог расслабиться в процессе игры, отдохнуть.

Целевая аудитория разрабатываемого продукта составляет диапазон людей любого пола от 12 лет, которые хотят просто расслабиться, отдохнуть морально и разгрузиться от рутинных задач, согласно статистике [8].

1.2 Содержательная формулировка задачи

Требования для MVP (минимального жизнеспособного продукта):

- сохранение игрового процесса;

- введенная система роста растений;

- введенная система продажи товара.

Ключевые вайрфреймы:

- начальный экран;

- игровой процесс;

- инвентарь.

Начальный экран (рис. 1) представляет собой экран, который пользователь видит при запуске приложения. Он содержит декоративные элементы: название игры, задний фон, дополнительные декорации, а также две кнопки: кнопка начала игры и кнопка выхода из приложения. Данный экран позволяет пользователю ориентироваться в приложении при его запуске, а также создает общую атмосферу игры.

Рисунок 1 - Вайрфрейм начального экрана

При нажатии на кнопку начала игры пользователь начинает игровой процесс. Вайрфрейм игрового процесса указан на рисунке 2. Данный экран содержит непосредственно управляемого игрового персонажа, управление которым осуществляется при помощи джойстика, и игровые элементы: грядки для выращивания растений и декорации, с которыми также можно взаимодействовать путем нажатия на кнопки взаимодействия (например, у грядок - посадить растения, собрать урожай или же полить растения). Также на экране в верхнем правом углу расположена кнопка паузы, которая приостанавливает игровой процесс.

Рисунок 2 - Вайрфрейм игрового процесса

При взаимодействии пользователя с определенной декорацией (например, рынок) откроется меню инвентаря (рис. 3). На данном экране имеется панель, перекрывающая игровой процесс. Панель содержит в себе некоторые строки, состоящие из иконки растения, его названия, количества и кнопок, с помощью которых можно продать весь урожай определенного растения. Количество данных строк зависит от общего количества видов растения. Данный экран предназначен для продажи урожая.

Рисунок 3 - Вайрфрейм инвентаря

Цветовая схема разрабатываемого приложения представлена на рисунке 4.

Рисунок 4 - Цветовая схема

1.3 Поиск аналогов

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

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

С целью поиска аналогов и дальнейшего сравнения по некоторым критериям необходимо обратиться в крупный и распространенный магазин мобильных приложений, а именно Google Play Store, который имеется практически на каждом смартфоне на операционной системе Android с поддержкой Google сервисов.

Первым аналогом можно привести мобильную игру Stardew Valley от компании ConcernedApe. Полное прохождение данной игры рассчитано на 146 часов ввиду большого количества контента, а типом или поджанром симулятора является Sandbox или же песочница, что подразумевает под собой то, что пользователю дается некая свобода воли, например, строительство зданий, оптимизация различных процессов, и кастомизация, то есть выбор внешнего вида персонажа. Режимы в игре следующие: однопользовательский, многопользовательский. Данную игру можно установить не только на смартфон под управлением Android, но и под управлением IOS. Stardew Valley разработана на базе игрового движка Microsoft XNA, режим экрана - горизонтальный (рис. 5).

Рисунок 5 - Игровой процесс Stardew Valley

Следующим аналогом можно считать мобильную игру Forager от HopFrog. Forager - это 2D игра с открытым миром с внедренными механиками исследования, фермерства и создания предметов. На полное прохождение данной игры с выполнением абсолютно всех заданий, квестов и с получением всех наград пользователь может потратить до 36 часов. Поджанром игры является экшен-симулятор, то есть жанр, в котором от пользователя (игрока) требуется реагирование на происходящее и постоянное внимание, например, для уклонения от атак вражеских героев (мобов, боссов). Режим в игре без дополнений (модов) только один - однопользовательский. Forager также можно установить и на смартфон под управлением Android, и на смартфон под управлением IOS. Мобильная игра разработана на базе игрового движка GameMaker, режим экрана - горизонтальный. Игровой процесс изображен на рисунке 6.

Рисунок 6 - Игровой процесс Forager

Завершающим аналогом для сравнения и анализа является Мини-мини ферма от CoffeeBreak. Указанная мобильная игра отличается от вышеописанных тем, что не имеет условного времени прохождения, так как от пользователя постоянно требуется терпение, чтобы подождать завершения какого-либо процесса, например, выращивания растения. Поджанром данной игры является казуальный симулятор. Казуальная игра - игра, суть которой в максимальном упрощении игрового процесса для игрока, например, пользователю необходимо взаимодействовать лишь с одной или двумя кнопками. Вследствие имеющейся простоты в подобные игры можно играть условно бесконечно, то есть время игры растягивается.

Рисунок 7 - Игровой процесс Мини-мини фермы

Режимов экрана предоставляется на выбор два: горизонтальный (рис. 7) либо вертикальный. Мини-мини ферму можно установить только на смартфоны с операционной системой Android. Мобильная игра разработана на базе движка Unity, режим игры - однопользовательский.

В связи с вышеописанными аналогами была составлена сравнительная таблица, которая наглядно отображает отличия и сходства аналогов с разрабатываемым проектом.

Таблица 1

Сравнительная таблица аналогов

Аналог/ критерий

Платформа

Время полного прохождения

Поджанр

Режимы игры

Режим экрана

Способ управления игровым персонажем

Игровой движок

Stardew Valley

Android, IOS

До 146 часов

Sandbox

Однопользовательский, многопользо-вательский

Горизонтальный

Кнопки управления на экране

Microsoft XNA

Forager

Android, IOS

До 36 часов

Экшен-симулятор

Однопользовательский

Горизонтальный

Кнопки управления на экране

Game Maker

Мини-мини ферма

Android

Условно бесконечно

Казуаль-ный симулятор

Однопользовательский

Горизонтальныйвертикальный

Сенсорное взаимодействие с объектами

Unity

Разрабатываемый проект

Android

Примерно 4-6 часов

Аркадный симулятор

Однопользовательский

Горизонтальный

Кнопки управления на экране

Unity

Из таблицы 1 видно, что поджанры сравниваемых игр-аналогов разные, даже если общий жанр один - симулятор. Несмотря на общий жанр, время полного прохождения имеет большой диапазон - от 4 часов до условно бесконечного геймплея. Также из таблицы 1 видно, что все сравниваемые аналоги имеют горизонтальный режим экрана, а подавляющее большинство аналогов имеют лишь однопользовательский режим игры. Об игровых движках и о его выборе больше написано в главе 2 - Реализация приложения.

2. Реализация приложения

2.1 Описание средств разработки и программирования

Для разработки приложения необходимо выбрать один из языков программирования и реализовать поставленную цель при помощи использования специализированных библиотек. Для грамотного выбора средства разработки была создана сравнительная таблица 2.

Таблица 2

Сравнительная таблица сред разработки

Критерий

Unity 3D

Android Studio

Unreal Engine

Интуитивно понятный интерфейс

Есть

Есть

Есть

Поддерживаемые для разработки приложений операционные системы

Windows, masOS, Linux, Android, IOS и др.

Android

Windows, masOS, Linux, Android, IOS

Необходимость устанавливать дополнительные пакеты

Нет

Есть

Есть

Поддерживаемый основной язык программирования

С#

Java

С++

Человеческий фактор: понимание разработчиком проекта среды разработки

Максимальное, имеется опыт

Среднее, есть небольшой опыт

Минимальное, нет опыта

Для создания мобильного приложения-игры в жанре аркадный симулятор был выбран язык программирования C#, работа с которым проводилось при помощи среды разработки Unity.

Unity - кроссплатформенная среда разработки компьютерных игр, разработанная американской компанией Unity Technologies.

Unity - это игровой движок, на котором разрабатывают мобильные игры и проекты для ПК (Windows, iOS, Linux) и консолей, например для Xbox, PlayStation. В нем имеются различные компоненты для работы с графикой, анимацией, физикой объектов, звуком, шаблонами и скриптами.

В Unity используется компонентно-ориентированный подход, в рамках которого разработчик создает объекты (например, главного героя) и к ним добавляет различные компоненты (например, визуальное отображение персонажа и способы управления им).

Благодаря Drag-and-drop интерфейсу и функциональному графическому редактору движок позволяет рисовать карты и расставлять объекты в реальном времени и сразу же тестировать получившийся результат. Drag-and-drop - способ оперирования элементами интерфейса в интерфейсах пользователя при помощи манипулятора «мышь» или сенсорного экрана.

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

Игровой ассет (англ. Game Asset), также игровой ресурс - цифровой объект, преимущественно состоящий из однотипных данных, неделимая сущность, которая представляет часть игрового контента [5].

Многие ассеты доступны бесплатно, другие предлагаются за небольшую сумму, и при желании можно создавать собственный контент.

Каждый отдельный файл в Unity-проекте - это неделимая сущность, а значит он является ассетом.

Встроенные ассеты - это ассеты, являющиеся частью игрового движка. Они создаются и редактируются внутри самого движка.

К встроенным ассетам относятся:

- стандартный примитив - встроенная модель для создания примитивной фигуры;

- анимационный клип - файл, который хранит в себе информацию об изменениях координат объекта;

- аудиомикшер - файл, который содержит в себе информацию о настройках громкости и эффектов источников звука;

- материал - файл, который хранит в себе информацию о настройке рендеринга объекта на сцене, настройку шейдера;

- физический материал - файл, который позволяет настроить физические параметры объекта, чтобы контролировать его поведение (например, ассет резинового мяча или кирпича);

- префаб - файл, который содержит информацию об игровом шаблоне (например, шаблон противника или оружия);

- сцена - файл, хранящий в себе информацию о настройках сцены и объектах, которые она содержит;

- спрайт - файл, который хранит настройки отображения спрайта (например, особенности того, как объект будет растягиваться или сколько именно спрайтов содержит в себе данная текстура).

Помимо встроенных ассетов, существуют ассеты, которые не являются частью игрового движка. Они могут создаваться с помощью различных программ, включая написанные на языке программирования С#. Например, звуки, шрифты, скрипты, текстуры или видеоклипы.

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

Третья сильная сторона Unity - поддержка большого количества платформ, технологий, API (Application Programming Interface или программный интерфейс приложения). Созданные на движке Unity игры можно легко портировать между ОС Windows, Linux, OS X, Android, iOS, на консоли семейств PlayStation, Xbox, Nintendo, на VR- и AR-устройства.

Unity поддерживает DirectX и OpenGL, работает со всеми современными эффектами рендеринга, включая новейшую технологию трассировки лучей в реальном времени.

Однако Unity имеет и свои недостатки. Например, медлительность. Создание масштабных, сложных сцен с множеством компонентов может негативно повлиять на производительность игры, в результате чего разработчикам придется потратить дополнительное время и ресурсы на оптимизацию, а возможно - и удаление некоторых элементов из проекта.

Кроме того, приложения, созданные на Unity, довольно «тяжеловесны»: даже самая простая пиксельная игра может занимать несколько сотен мегабайт на ПК.

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

В интерфейсе Unity имеется несколько разделов [5], которые отвечают за разные элементы разработки, игровые объекты, настройку их свойств и параметров (рис. 8).

Рисунок 8 - Интерфейс Unity

Hierarchy (1) - окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.

Scene (2) - окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).

Game (3) - окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.

Inspector Window (4, 5) - окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.

Console (6) -используется для отладки и поиска ошибок.

Project (7) - система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).

C# - объектно-ориентированный, ориентированный на компоненты язык программирования [6]. C# предоставляет языковые конструкции для непосредственной поддержки такой концепции работы. Благодаря этому C# подходит для создания и применения программных компонентов. С момента создания язык C# обогатился функциями для поддержки новых рабочих нагрузок и современными рекомендациями по разработке ПО.

Рассматривая функции языка C#, которые позволяют создавать надежные и устойчивые приложения, стоит выделить следующие:

- сборка мусора автоматически освобождает память, занятую недостижимыми неиспользуемыми объектами;

- типы, допускающие значение null, обеспечивают защиту от переменных, которые не ссылаются на выделенные объекты;

- обработка исключений предоставляет структурированный и расширяемый подход к обнаружению ошибок и восстановлению после них;

- лямбда-выражения поддерживают приемы функционального программирования;

- синтаксис LINQ создает общий шаблон для работы с данными из любого источника;

- поддержка языков для асинхронных операций предоставляет синтаксис для создания распределенных систем;

- в C# имеется Единая система типов. Все типы C#, включая типы-примитивы, такие как int и double, наследуют от одного корневого типа object. Все типы используют общий набор операций, а значения любого типа можно хранить, передавать и обрабатывать схожим образом.

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

C# подчеркивает Управление версиями, чтобы обеспечить совместимость программ и библиотек с течением времени. Вопросы управления версиями существенно повлияли на такие аспекты разработки C#, как раздельные модификаторы virtual и override, правила разрешения перегрузки методов и поддержка явного объявления членов интерфейса.

Программы C# выполняются в .NET, виртуальной системе выполнения, вызывающей общеязыковую среду выполнения (CLR) и набор библиотек классов. Среда CLR - это реализация общеязыковой инфраструктуры языка (CLI), являющейся международным стандартом, от корпорации Майкрософт. CLI является основой для создания сред выполнения и разработки, в которых языки и библиотеки прозрачно работают друг с другом.

Исходный код, написанный на языке C#, компилируется в промежуточный язык (IL), который соответствует спецификациям CLI. Код на языке IL и ресурсы, в том числе растровые изображения и строки, сохраняются в сборке, обычно с расширением .dll. Сборка содержит манифест с информацией о типах, версии, языке и региональных параметрах для этой сборки.

При выполнении программы C# сборка загружается в среду CLR. Среда CLR выполняет JIT-компиляцию из кода на языке IL в инструкции машинного языка. Среда CLR также выполняет другие операции, например, автоматическую сборку мусора, обработку исключений и управление ресурсами. Код, выполняемый средой CLR, иногда называют "управляемым кодом". "Неуправляемый код" компилируется на машинный язык, предназначенный для конкретной платформы. Обеспечение взаимодействия между языками является ключевой особенностью .NET. Код IL, созданный компилятором C#, соответствует спецификации общих типов (CTS). Код IL, созданный из кода на C#, может взаимодействовать с кодом, созданным из версий .NET для языков F#, Visual Basic, C++. Существует более 20 других языков, совместимых с CTS. Одна сборка может содержать несколько модулей, написанных на разных языках .NET, и все типы могут ссылаться друг на друга, как если бы они были написаны на одном языке.

В дополнение к службам времени выполнения .NET также включает расширенные библиотеки. Эти библиотеки поддерживают множество различных рабочих нагрузок. Они упорядочены по пространствам имен, которые предоставляют разные полезные возможности: от операций файлового ввода и вывода до управления строками и синтаксического анализа XML, от платформ веб-приложений до элементов управления Windows Forms. Обычно приложение C# активно используют библиотеку классов .NET для решения типовых задач. Типы значений в C# делятся на простые типы (int, long, short), типы перечислений (enum), типы структур (struct), типы, допускающие значение NULL, и типы значений кортежей. Ссылочные типы в C# подразделяются на типы классов (class), типы интерфейсов (interface), типы массивов и типы делегатов (delegate).

2.2 Архитектура

Архитектура программного обеспечения (англ. software architecture) - совокупность важнейших решений об организации программной системы, включающая в себя:

- выбор структурных элементов и их интерфейсов, с помощью которых составлена система, а также их поведения в рамках сотрудничества структурных элементов;

- соединение выбранных элементов структуры и поведения во всё более крупные системы;

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

Архитектура ПО (разработка архитектуры программного обеспечения), это искусство и наука строить и проектировать программное обеспечение таким образом, чтобы оно удовлетворяло всем заявленным к нему требованиям, а также обеспечивало максимальную простоту доработки, развертывания и масштабирования приложения [4].

Архитектура приложения устанавливает границы между разными частями приложения и их ответственностями. Чтобы удовлетворить описанные выше потребности, нужно создавать архитектуру своего приложения в соответствии с принципами разделения ответственностей и построения пользовательского интерфейса на основе модели данных.

Разделение ответственности (separation of concerns, SoC) подразумевает, что программа должна состоять из функциональных блоков, как можно меньше дублирующих функциональность друг друга.

Пользовательский нужно строить на основе моделей данных. Желательно поддерживающих постоянное хранение данных.

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

Согласно общепринятым архитектурным принципам у каждого приложения должно быть как минимум два слоя: слой пользовательского интерфейса, который отображает данные приложения на экране, и слой данных, который содержит логику приложения и открывает доступ к данным приложения.

Роль слоя UI (или слоя представления) - отображать на экране данные приложения. Если данные меняются - из-за взаимодействия с пользователем (например, нажатия кнопки) или внешнего воздействия (например, отклика сети) - UI должен обновиться и отразить изменения.

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

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

Рисунок 9 - Архитектура разрабатываемого приложения

С помощью языка графического описания для объектного моделирования UML была построена диаграмма вариантов использования. Единственным актером системы является пользователь. Рассматриваемой подсистемой является разрабатываемое мобильное приложение - игра. В подсистеме указаны варианты использования подсистемы со стороны пользователя, то есть основные возможности, предоставляемые пользователю - игроку.

На рисунке 10 представлены варианты использования игрового приложения.

Рисунок 10 - Варианты использования разрабатываемого приложения

2.3 Разработка приложения

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

В данном случае спрайты - графические объекты в компьютерной графике, - планируется создавать в форме цифровых изображений «Пиксель-арт». Пиксельная графика - форма цифровой живописи, созданной на компьютере с помощью растрового графического редактора, где изображение редактируется на уровне пикселей. Наиболее популярными и распространенными графическими редакторами для создания пиксельной графики являются Aseprite, Pyxel Edit и Pro Motion NG, каждый из которых обладает как достоинствами, так и недостатками.

Например, Aseprite - это редактор для анимации в стиле пиксельной графики. Множество дизайнеров и художников, работающих в данном редакторе, называют его «лучшей программой для пиксель-арта». Достоинствами Aseprite можно считать следующие характеристики:

- удобный пользовательский интерфейс, который не требует большого количества времени на изучение и освоение;

- возможность работать с кадрами анимации, каждый из кадров возможно отрегулировать по времени и прозрачности;

- возможность создания или разбиения изображения на отдельные слои;

- возможность экспорта анимации в форматы gif или webp, а также возможность зацикливания анимации;

- возможность экспортировать кадры анимации в лист спрайтов или sprite sheet для дальнейшего использования анимации, например, в разработке приложений или игр.

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

При создании нового документа пользователь может настроить размер тайла или оставить стандартное значение 16х16 пикселей. Также в Pyxel Edit имеются заранее созданные цветовые палитры и удобные инструменты для работы с цветом. Инструмент для анимации также представлен в виде тайлов, что позволяет настраивать каждый отдельный кадр.

Pro Motion NG обладает множеством полезных функций: анимирование, тайл-маппинг, антиалиасинг и продвинутый редактор для работы с цветом. Также программа позволяет легко интегрировать ассеты в игровые движки, например, Unity и Game Maker, однако данный редактор (за исключением пробной бесплатной версии) не сможет позволить себе инди-разработчик, и в основном Pro Motion NG используется в крупных студиях: Ubisoft, Halfbrick, WayForward.

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

Было необходимо разработать следующие элементы: игровой персонаж (с анимацией ходьбы), плоскость для перемещения персонажа (в данном случае - луг или трава), различные выращиваемые культуры (именно несколько стадий роста, а также иконки для отображения в инвентаре), грядки для выращивания, кнопки взаимодействия с декорациями и иными элементами (кнопка полива растений, кнопка посадки растений и др.), игровая валюта и прочие декорации. Например, sprite sheet анимации игрового персонажа представлен на рисунке 11.

Рисунок 11 - Лист кадров анимации персонажа

Также для более комфортной игры необходимо добавить в проект звуковое сопровождение. При помощи программы FL Studio было создано два файла фоновой музыки: для дневного времени игровых суток и для ночного времени игровых суток. Данные файлы формата mp3 были интегрированы в проект при помощи AudioSource.

Непосредственная программная разработка проекта проводилась при помощи Unity и языка программирования C#.

В Unity используются сцены. Сцены разрабатываемого проекта указаны на рисунке 12.

Рисунок 12 - Используемые сцены

При запуске игры запускается главное меню - сцена MainMenu.unity (рис. 13).

Рисунок 13 - Главное меню

На данной сцене присутствуют следующие объекты: камера (MainCamera), декорации, анимированный игровой персонаж. Примером декораций являются облака: они находятся на заднем плане, а за их создание, передвижение и удаление отвечают соответственно следующие скрипты: CloudSpawner.cs, Cloud.cs и CloudShreder.cs (см. Приложение А).

Также в главном меню присутствует холст (Canvas), который содержит кнопки: «Начать» и «Выйти». При нажатии на кнопку «Начать» на программном уровне загружается следующая сцена - Game.unity (рис. 14).

Рисунок 14 - Игровая сцена

На рисунке 14 также указана иерархия объектов данной сцены. На ней также присутствует камера - MainCamera - объект, который занимается отрисовкой других объектов, то есть переводит информацию в визуальное представление. На объекте камеры имеется скрипт CameraFollower.cs, который отвечает за передвижение камеры таким образом, чтобы игровой персонаж оставался в центре при возможности. CameraFollower содержит в себе переменные, которые выведены в интерфейс юнити при помощи атрибута [SerializeField] (рис. 15).

Рисунок 15 - Пример работы атрибута [SerializeField]

На рисунке 15 можно увидеть следующие переменные скрипта CameraFollower.cs:

- Target - объект, за которым будет следовать камера;

- Speed - скорость, с которой будет следовать камера;

- Offset - отступ от позиции цели преследования камеры;

- Corners - углы плоскости, за которую камера выйти не может.

Следующим элементом в иерархии является Canvas - объект, являющийся некой плоскостью, содержащий другие объекты, которые отображаются поверх объектов, которые не находятся на этой плоскости, используется для создания пользовательского интерфейса.

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

Джойстик - Floating Joystick - готовый объект, скачанный из магазина AssetStore Unity. Джойстик используется для реализации передвижения игрового персонажа. В зависимости от местоположения центральной части джойстика Handle изменяется скорость передвижения игрового персонажа: в скрипте PlayerMovement.cs на объекте игрового персонажа считывается ссылка на объект джойстика при помощи конструкции input = PlayerInput.input на рисунке 16.

Рисунок 16 - Считывание ссылки на объект джойстика

Иными словами, считываются координаты Х и Y у Handle по отношению к фоновой части джойстика - рамкой или границей Background. Далее считанные координаты умножаются на значение Speed - скорость передвижения игрового персонажа. На основе полученной величины работает анимация передвижения персонажа, которая использует магнитуду полученной скорости, то есть скорость анимации находится в прямой зависимости от скорости передвижения персонажа.

На Canvas находится группа кнопок Buttons: кнопка взаимодействия с игровыми объектами (Use Button) и кнопка открытия панели инветаря (Inventory Button). При нажатии на кнопку открытия инвентаря активируется один из скрытых указанных ранее элементов - панель инвентаря Inventory Panel (внешний вид и имеющиеся на панели объекты указаны на рисунке 17). Панель инвентаря при отображении генерирует визуальную информацию об имеющихся в игре растениях, а эта информация адаптируется под игрока - то есть отображается количество собранных (не проданных) игроком растений, а также общая стоимость урожая одной культуры. Панель также содержит кнопку, которая позволяет игроку продать все имеющиеся растения одной культуры.

Рисунок 17 - Панель инвентаря

Кнопка включения панели улучшений - Use Button - аналогичным образом отображает панель улучшений Upgrade Panel, но с условием, что игровой персонаж на данный момент находится вблизости от игрового объекта таблички, за что отвечает скрипт UseTrigger.cs (см. Приложение А).

Upgrade Panel работает подобным образом с Inventory Panel: при открытии происходит также генерация элементов, которая зависит от привязанной к табличке грядке Gardenbed.

Панель отображения количества монет Coin Panel может быть активирована только тогда, когда активирована Upgrade Panel или Inventory Panel, и содержит информацию об имеющихся у игрока на данный момент игровых монет. Объект Event System в иерархии работает в автоматическом режиме и позволяет взаимодействовать с объектов Canvas (например, нажимать на кнопки Buttons).

Далее по иерархии следует объект игрового персонажа Player. Для наиболее приятного и комфортного времяпровождения при игровом процессе на объекте игрока имеется объект освещения Light, который также помогает игроку ориентироваться на игровой карте при наступлении игровой ночи - ночью в игре выключается глобальное освещение, а также изменяется музыка. Также на объекте игрового персонажа имеются объекты Harvest Trigger и Use Trigger. Данные объекты обеспечивают игроку собирать и сажать растения в определенном радиусе от игрового персонажа.

На объект игрового персонажа навешан скрипт ZAlignment.cs (рис. 18), который, основываясь на координате Y объекта, изменяет его координату Z, что в итоге приводит к тому, что один объект может находиться как на переднем плане, так и на заднем плане по отношению к другому объекту (в данном случае игровой персонаж может быть позади растений либо спереди них).

Рисунок 18 - Скрипт ZAlignment.cs

Ключевым моментом в игровом процессе являются посадка, рост и сбор растений. Растения при появлении добавляются в список plants в объекте PlantController (рис. 19).

Рисунок 19 - Код метода SpawnPlant

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

2.4 Руководство пользователя

При запуске игры отображается главное меню (рис. 20). В правой части экрана отображаются две кнопки: «Начать» и «Выйти». При нажатии на кнопку «Выйти» приложение закроется.

Рисунок 20 - Главное меню игры

При нажатии на кнопку «Начать» запустится игровой процесс (рис. 21). На игровой плоскости находятся такие элементы, как декорации, например, кусты, камни, пни, деревья, фонари, и интерактивные: грядки и таблички улучшений.

Рисунок 21 - Игровой процесс

Управление персонажем происходит при помощи джойстика на экране мобильного телефона. Для того, чтобы посадить растение, игроку необходимо переместить игрового персонажа на грядки - в таком случае на грядках отобразятся семена (рис. 22), что является первой стадией роста растений.

Рисунок 22 - Первая стадия роста растений

После того, как игрок посадил растения, ему необходимо подождать некоторое количество времени до завершения роста (рис. 23). Время для завершения роста у каждого вида растений разное: морковь - 28 секунд, свёкла - 60 секунд, кукуруза - 88 секунд, капуста - 100 секунд, пшеница - 180 секунд.

Рисунок 23 - Завершающий этап роста растений на примере моркови

Далее, для сбора урожая, игроку необходимо так же, как и для посадки семян, переместить игрового персонажа на грядки с выращенными растениями - они автоматически соберутся и запишутся в инвентарь. Просмотреть инвентарь можно при помощи кнопки в нижней правой части экрана (рис. 24). В инвентаре отображается список собранных растений, их иконки, название, количество и общая сумма, которую игрок получит при продаже того или иного вида растений.

Рисунок 24 - Инвентарь

При открытом инвентаре в верхней правой части экрана отображается количество монет. Увеличить количество монет можно через продажу урожая, воспользовавшись кнопкой с изображением монеты в инвентаре.

Потратить имеющиеся монеты игрок может на развитие фермы - например, на увеличение количества имеющихся грядок или на открытие новых. Для открытия панели улучшений игроку необходимо переместить игрового персонажа к соответствующей табличке возле грядки (рис. 25).

Рисунок 25 - Табличка для улучшений

Для взаимодействия с табличкой при приближении к ней в нижней правой части экрана отобразится кнопка взаимодействия (рис. 26), на которую игроку необходимо нажать.

Рисунок 26 - Кнопка взаимодействия

После нажатия на кнопку взаимодействия близи таблички улучшений откроется панель улучшений (рис. 27).

Рисунок 27 - Панель улучшений

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

В процессе игры игрок может развивать ферму, улучшать и увеличивать количество грядок, а также приобретать дополнительные источники освещения для лучшей ориентации при смене времени суток.

программный приложение игра архитектура дизайн

Заключение

В ходе выполнения курсовой работы были решены следующие задачи:

- проанализирован рынок мобильных игр в жанре симулятор;

- разработана архитектура приложения;

- разработаны ключевые вайрфреймы, по которым в дальнейшем был составлен пользовательский интерфейс и внешний вид мобильной игры;

- разработан непосредственно программный код на выбранном языке программирования C# при помощи выбранной среды разработки игр Unity;

- проведено тестирование и устранены неполадки в работе приложения путем исправления программного кода;

- составлено руководство пользователя.

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

В соответствии с целью и необходимыми для решения задачами было разработано мобильное приложение-игра в жанре аркадного симулятора.

В первой главе пояснительной записки описано назначение приложения, приведены вайрфреймы проекта, а также рассмотрены и сравнены аналоги разработанного приложения. Во второй главе описаны среда разработки и язык программирования, использованные при реализации приложения.

Список используемой литературы

1. 163 факта из статистики рынка мобильных игр 2021-2022 года

2. Developing and publishing games since 2009

3. Unity // Skillfactory

4. Архитектура приложений и интеграции

5. Движок Unity - особенности, преимущества и недостатки // cubiq

6. Краткий обзор языка C# // Microsoft

7. Лучшие симуляторы на андроид // goha

8. Рынок и аудитория мобильных игр // igrology

9. Что такое игровой ассет в Unity // GeekBrains

Приложение А

Листинг

MainMenu.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.SceneManagement;

public class MainMenu : MonoBehaviour{

public void Load(){

SceneManager.LoadScene("Game");}

public void Quit(){

Application.Quit();}}

Cloud.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Cloud : MonoBehaviour{

Rigidbody2D body;

float speed;

void Start(){

body = GetComponent<Rigidbody2D>();

speed = Random.Range(0.5f, 3f);}

void FixedUpdate(){

body.velocity = new Vector2(speed, 0);}}

CloudShereder.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class CloudShreder : MonoBehaviour{

private void OnTriggerEnter2D(Collider2D collision){

Cloud cloud;

if (collision.TryGetComponent(out cloud))

Destroy(cloud.gameObject);}}

CloudSpawner.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class CloudSpawner : MonoBehaviour{

public float speed;

public float speedOffset;

public float offsetY;

public List<Cloud> cloudsPrefabs;

private void Start(){

StartCoroutine(Spawn());}

IEnumerator Spawn(){

while (true){

var cloud = Instantiate(cloudsPrefabs[Random.Range(0,

cloudsPrefabs.Count)]);

cloud.transform.position = new Vector3(transform.position.x,

transform.position.y + (Random.Range(0, offsetY)/* *

Mathf.Sign(Random.Range(-1f, 1f))*/), transform.position.z);

yield return new WaitForSeconds(speed + (Random.Range(0, speedOffset) *

Mathf.Sign(Random.Range(-1f, 1f))));}}}

Gardenbed.cs

using System.Collections;

using System.Collections.Generic;

using System.Threading.Tasks;

using UnityEngine;

public class Gardenbed : MonoBehaviour{

[SerializeField] PlantData plantData;

[SerializeField] Plant plantPrefab;

[SerializeField] ParticleSystem particlesPrefab;

PlantController plantController;

Plant currentPlant;

public PlantData PlantData => plantData;

private void Start(){

plantController

=ControllerManager.GetInstance<WorldManager>().GetController<PlantCo

ntroller>();}

private void SetPlant(){

if (currentPlant == null)

SpawnPlant();}

private void SpawnPlant(){

var plant = Instantiate(plantPrefab, transform);

currentPlant = plant;

plantController.AddPlant(currentPlant);

plant.Initialize(this, plantData);}

public void RemovePlantFromController(){

plantController.RemovePlant(currentPlant);}

private async void Harvest(){

currentPlant.isReadyToHarvest = false;

currentPlant.Dissapear();

var particles = Instantiate(particlesPrefab, transform);

particles.transform.position = new Vector3(transform.position.x,

transform.position.y, transform.position.z - 2);

particles.startColor = plantData.particlesColor;

particles.Emit(Random.Range(30,51));

while (!currentPlant.isDissapear)

await Task.Yield();

plantController.Harvest(this);

Destroy(currentPlant.gameObject);

currentPlant = null;}

public void Interact(){

if (currentPlant == null)

SpawnPlant();

else

if (currentPlant.isReadyToHarvest)

Harvest();}}

Plant.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class Plant : MonoBehaviour{

PlantData data;

Gardenbed gardenbed;

SpriteRenderer spriteRenderer;

private int GrowStage;

private int currentTime;

private int targetTime;

public bool isReadyToHarvest;

public bool isDissapear;

private void Awake(){

spriteRenderer = GetComponent<SpriteRenderer>();}

public void Initialize(Gardenbed gardenbed, PlantData data){

this.gardenbed = gardenbed;

this.data = data;

targetTime = data.TimeToGrow;

SetSprite();}

private void SetSprite(){

spriteRenderer.sprite = data.sprites[GrowStage];

if (GrowStage > 0)

gameObject.AddComponent<ZAlignment>();}

public void Grow(){

currentTime++;

if (currentTime >= targetTime && GrowStage < 3)

while (currentTime > targetTime){

currentTime -= targetTime;

GrowUp();}}

public void Dissapear(){

StartCoroutine(DissapearProcess());}

IEnumerator DissapearProcess(){

float dissapearTime = 1f;

float countTicks = dissapearTime / 0.02f;

float substract = 1 / countTicks;

while (spriteRenderer.color.a > 0){

spriteRenderer.color = new Color(spriteRenderer.color.r,

spriteRenderer.color.g, spriteRenderer.color.b, spriteRenderer.color.a -

substract);

yield return new WaitForFixedUpdate();}

isDissapear = true;}

private void GrowUp(){

GrowStage++;

if (GrowStage >= 3){

gardenbed.RemovePlantFromController();

isReadyToHarvest = true;}

SetSprite();}}

PlantData.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

[CreateAssetMenu(menuName = "Data/Plant", fileName = "New lantData")]

public class PlantData : ScriptableObject{

[Header("Stats")]

public int Price;

public int TimeToGrow;

public Vector2 DropCount = new Vector2(1, 1);

[Header("Settings")]

public string Name;

public List<Sprite> sprites;

public Color particlesColor = Color.white;

public Sprite LastSprite => sprites[sprites.Count - 1];}

PlayerAnimation.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class PlayerAnimation : MonoBehaviour{

Animator animator;

Rigidbody2D rb;

PlayerMovement playerMovement;

[SerializeField] float speedMult = 1f;

private void Start(){

animator = GetComponent<Animator>();

rb = GetComponentInParent<Rigidbody2D>();

playerMovement = GetComponentInParent<PlayerMovement>();}

void FixedUpdate(){

animator.SetBool("isMoving", playerMovement.isMoving);

animator.SetFloat("Speed", rb.velocity.magnitude * speedMult);}}

PlayerInput.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class PlayerInput : MonoBehaviour{

public static Joystick input;

void Awake(){

input = GetComponent<Joystick>();}}

PlayerMovement.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class PlayerMovement : MonoBehaviour{

[SerializeField] float Speed;

public bool isMoving = false;

private Joystick input;

private Rigidbody2D rb;

void Start(){

rb = GetComponent<Rigidbody2D>();

input = PlayerInput.input;}

void FixedUpdate(){

rb.velocity = input.Direction * Speed;

float value = Mathf.Abs(transform.localScale.x);

float direction;

isMoving = true;

if (rb.velocity.x > 0)

direction = 1;

else if (rb.velocity.x < 0)

direction = -1;

else{

isMoving = false;

return;}

transform.localScale = new Vector3(value * direction,

transform.localScale.y, transform.localScale.z);}}

HarvestTrigger.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class HarvestTrigger : MonoBehaviour{

private List<Gardenbed> gardenbeds = new List<Gardenbed>();

private void FixedUpdate(){

foreach(var gardenbed in gardenbeds)

gardenbed.Interact();}

private void OnTriggerEnter2D(Collider2D collision){

if (collision.TryGetComponent(out Gardenbed gardenbed))

gardenbeds.Add(gardenbed);}

private void OnTriggerExit2D(Collider2D collision){

if (collision.TryGetComponent(out Gardenbed gardenbed))

gardenbeds.Remove(gardenbed);}}

UseTrigger.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class UseTrigger : MonoBehaviour{

UIController controller;

private List<Usable> usables = new List<Usable>();

private Usable Nearest{

get{

float minDifference = float.MaxValue;

Usable obj = null;

foreach (var usable in usables){

var difference = ((Vector2)(usable.transform.position -

transform.position)).magnitude;

if (difference < minDifference){

minDifference = difference;

obj = usable;}}

return obj;}}

private void Start(){

controller =

ControllerManager.GetInstance<WorldManager>().GetController<UIContro

ller>();}

public void Use(){

Nearest?.OnUse();}

public void FixedUpdate(){

if (usables.Count > 0)

controller.ShowUseButton();

else

controller.HideUseButton();}

private void OnTriggerEnter2D(Collider2D collision){

if (collision.TryGetComponent(out Usable usable))

usables.Add(usable);}

private void OnTriggerExit2D(Collider2D collision){

if (collision.TryGetComponent(out Usable usable))

usables.Remove(usable);}}

ZAlignments.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class ZAlignment : MonoBehaviour{

[Tooltip("Отступ от позиции, нужно чтобы к спрайтам, низ которых не

обозначает точку соприкосновения с землёй,\nдать корректное

значение")]

[SerializeField] Vector2 offset;

void Update(){

transform.position = new Vector3(transform.position.x + offset.x,

transform.position.y + offset.y, transform.position.y * 0.1f);}}

Coin.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class ZAlignment : MonoBehaviour{

[Tooltip("Отступ от позиции, нужно чтобы к спрайтам, низ которых не

обозначает точку соприкосновения с землёй,\nдать корректное

значение")]

[SerializeField] Vector2 offset;

void Update(){

transform.position = new Vector3(transform.position.x + offset.x,

transform.position.y + offset.y, transform.position.y * 0.1f);}}

InventoryUI.cs

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class InventoryUI : MonoBehaviour{

[SerializeField] PlantPanel plantPanelPrefab;

[SerializeField] Transform content;

private void Start(){

...

Подобные документы

  • Анализ российского рынка мобильных приложений. Мобильное приложение как новый канал коммуникации с целевой аудиторией. Этапы создания мобильного приложения. План продвижения мобильного приложения в сети Интернет. Бесплатные инструменты продвижения.

    дипломная работа [1,6 M], добавлен 23.06.2016

  • Разработка приложения для проверки использования времен глаголов в английском языке. Создание базы данных. Анализ используемых средств для реализации автоматического разбора текста. Проектирование мобильного приложения с помощью диаграмм деятельности.

    дипломная работа [2,6 M], добавлен 13.09.2017

  • Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.

    курсовая работа [987,1 K], добавлен 27.06.2019

  • Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.

    курсовая работа [1,6 M], добавлен 19.04.2017

  • Обзор мобильной операционной системы ios: Архитектура ОС iOS; уровень библиотек; среды разработки приложения (Xcode, Xamarin). Доступ к информации колледжа "Угреша". Требования к мобильному приложению. Подготовка среды разработки. Тестирование приложения.

    дипломная работа [5,6 M], добавлен 10.07.2014

  • Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.

    дипломная работа [1,6 M], добавлен 17.06.2017

  • Проектирование удобного приложения для комфортной навигации по файлам облачного хранилища в одном файловом менеджере. Выбор интегрированной среды разработки. Выбор инструментов для визуализации приложения. Выбор средств отслеживания HTTPзапросов.

    курсовая работа [3,6 M], добавлен 16.07.2016

  • Разработка приложения "Калькулятор" для подсчитывания количества символов или букв в арабском тексте. Проектирование программной системы, определение функциональных требований к приложению. Алгоритм разработки модульной структуры мобильного приложения.

    презентация [853,9 K], добавлен 08.04.2019

  • Обзор подходов к разработке музейных приложений с элементами дополненной реальности, формирование требований к ним. Выбор методов разработки приложения, разработка пользовательского интерфейса. Принципы тестирования. Реализация раздела "Распознавание".

    дипломная работа [2,8 M], добавлен 03.07.2017

  • Разработка приложения, которое будет выполнять функции показа точного времени и точной даты. Определение дополнительных функций разработанного приложения. Рассмотрение основных этапов создания программного продукта. Результаты тестирования приложения.

    курсовая работа [2,2 M], добавлен 14.04.2019

  • Разработка и формализация эффективного подхода к оценке качества каналов трафика мобильного приложения. Преимущества работы с социальными сетями. Тестирование возможных типов каналов по привлечению установок приложения. Расчёт средней стоимости лидов.

    дипломная работа [2,6 M], добавлен 09.02.2017

  • Разработка программного решения по созданию мобильного приложения. Изучение технологий для разработки приложений. Анализ работы торговых агентов. Обоснование выбора языка программирования. Проектирование интерфейса структуры и верстка, листинг программы.

    дипломная работа [2,2 M], добавлен 08.06.2017

  • Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.

    курсовая работа [949,7 K], добавлен 22.02.2015

  • Изучение языков программирования PHP, SQL, C++, HTML. Рассмотрение правил запуска и использования локального сервера Denwer. Составление технического задания по разработке программного продукта. Описание создаваемого мобильного и веб-приложения.

    курсовая работа [212,4 K], добавлен 07.04.2015

  • Мобильные операционные системы. Основные характеристики систем iOS и Android, их достоинства, недостатки и индивидуальные возможности. Анализ преимуществ лидирующих мобильных платформ для разработки приложения. Основные различия в механизмах безопасности.

    дипломная работа [806,5 K], добавлен 01.01.2018

  • Характеристика объекта автоматизации. Создание многоуровневой архитектуры приложения, отладка метода безошибочной идентификации пользователей системы. Разработка нестандартного метода преобразования объектов базы данных в объекты классов приложения.

    курсовая работа [395,4 K], добавлен 28.04.2015

  • Анализ моделируемого приложения и постановка задачи. Диаграмма прецедентов, деятельности объектов и состояния классов. Разработка приложения-игры, выбор языка программирования и среды для разработки проекта, интерфейс приложения и ресурсы проекта.

    курсовая работа [308,5 K], добавлен 14.10.2011

  • Автоматизация системы снятия показаний счетчиков энергии. Разработка базы данных и клиентского приложения для структур жилищно-коммунального хозяйства, занимающихся составлением квитанций. Описание предметной области. Тестирование клиентского приложения.

    курсовая работа [953,3 K], добавлен 01.09.2016

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Электронные носители и их преимущества. Создание приложения электронного журнала для учета посещаемости и выполнения студентами лабораторных работ для мобильных устройств на базе Android. Автоматизация заполнения журнала, упрощение ведения учета.

    курсовая работа [681,5 K], добавлен 13.06.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.