Разработка обучающего игрового приложения на платформе Android

Анализ целевой аудитории. Функциональные характеристики пользовательского приложения. Разработка алгоритмов и интерфейса программного продукта, функций рабочей области. Написание скриптов на языке C#. Тестирование программы методом чёрного ящика.

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

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

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Аналитический обзор

1.1 Аналитический обзор целевой аудитории

1.2 Анализ требований к приложению

2. Проектирование

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

2.2 Разработка интерфейса

3. Реализация

3.1 Разработка функций рабочей области

3.2 Разработка приложения на языке C#

4. Тестирование

4.1 Методика тестирования

4.2 Результаты тестирования

Заключение

Список используемой источников

Приложение

Введение

Разработка обучающего игрового приложения на платформе Android.

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

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

Разработка приложения будет вестись в среде Unity - это инструмент для разработки двух и трехмерных приложений, которые работают на Windows. Приложения, созданные на данном движке, работают на разных ОС, например: android, ios, linuxwindowsphone, а также на игровых приставках браузерных приложениях. Программы, написанные на Unity, поддерживают directx, а также opengl. Движок имеет простой интерфейс, для разработки используются языки C# и Java. Проект состоит из сцен, которые содержат различные объекты и модели [2].

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

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

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

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

алгоритм интерфейс программа

1. Аналитический обзор

Unity3d- это новый и наиболее популярный кросс-платформенный движок, с его помощью можно разрабатывать игры и различные приложения. Разработала его компания Unity Technologies. Первая версия приложения была выпущена в 2005 году, в настоящее время используется версия 5+ .При использовании данного движка можно разрабатывать приложения для компьютеров(на linux и windows), различных устройств на платформах (android и ios) и для консольных приставок. Немного о возможностях движка. Первое, чтов среде разработки Unity3dвстроен игровой движок, что даёт возможность протестировать своё приложение, не выходя из редактора. Второе, Unity3d поддерживает импорт большого количества разных форматов, что позволяет разработчику приложения создавать сами модели в наиболее удобном приложении, а Unity3d использовать по его прямому назначению -- разработка программного продукта. Третье, написание скриптов происходит на самых популярных языках программирования это C# и JavaScript [2].

Редактор Unity3d имеет простой и понятный интерфейс, имеющий различные окна и легко-настраиваемый под себя.

За расчёты физики отвечает физический движок PhysXот компании NVIDIA.

Проект в Unity3dсостоит из сцен -- это отдельные файлы, которые содержат свои игровые миры со своими объектами, сценариями и настройками. Сцены состоят из объектов (моделей) и пустых игровых которые не имеют модели («пустышки»). Объекты, имеют набор компонент, с которыми и взаимодействуют скрипты. У объектов есть свои имена (допускается два одинаковых имени). Может быть метка и слой, на котором наш объект должен отображаться. У любого объекта на сцене всегда присутствует компонент “Transform”-- хранящий координаты местоположения, поворота и размеров объекта по трём осям. Объекты, имеющие видимую геометрию, имеют компонент “Mesh Renderer”, делающий модель объекта видимой [2].

Unity3d поддерживает физику ткани и твёрдых тел. В редакторе есть система наследования объектов; объекты дочерние будут повторять все изменения, родительского объекта.

Звуки, текстуры, модели и скрипты можно конвертировать в формат .unityassets и передавать другим разработчикам, или выкладывать в свободный доступ. Этот же формат используется в магазине Unity Store, в котором у разработчиков есть возможность бесплатно и за деньги выкладывать в общий доступ различные материалы, которые могут пригодиться при создании приложения. Для доступа в Unity Store, нужно иметь аккаунт разработчика Unity3d. В Unity3dесть все компоненты для создания мульти-плеера. В среде разработки Unity можно легко скомпилировать ваше приложение под разные ОС. Начиная от Android и заканчивая Windows [2].

C# - это объектно-ориентированный язык программирования, разработанный компанией -Microsoft в 1998-2001 годах. Язык разрабатывался для платформы Microsoft .NET Framework. С# относится к “С” подобным языкам программирования, синтаксис похож на языки Java и C++. Первая бета версия языка С# была выпущена в 2002 году и усовершенствуется по настоящее время. Сейчас актуальна четвёртая версия.

Язык программирования Java разработала компания Sun Microsystems, но в будущем его перекупила компания Oracle [3].

Java - это объектно-ориентированный язык программирования, его достоинство в том, что он транслируется в специальный байт-код и работает на любой виртуальной Java машине и не зависти он компьютерной архитектуры. Но это в тоже время и минус так, как снижается производительность программ выполняемых на Java. В настоящее время эта проблема практически решена, так как язык постоянно усовершенствуют [4].

В Unity имеется два языка на выбор это Java и С Sharp. Мы предпочтём язык С Sharp, так как в процессе обучения мне приходилось с ним сталкиваться и решать различные задачи используя данный язык.

Дальше нам нужно определиться для какой мобильной операционной системы мы будем разрабатывать приложение. Несомненно, мы выберем ОС на базе Android. Android- это операционная система для игровых приставок, смартфонов, телевизоров и для других устройств. В основе ядра лежит Linux и реализована виртуальная машина Java от Google. ОС разрабатывалась компанией Androidincorporated, которую потом приобрёл Google. Первая компания, которая создала смартфоном на платформе Android,стала HTC, и выпустила его в 2008 году. В 2009 году появилась фоторамка с ОС Android, а в 2011 году выпустили часы. В сентябре 2013 года в мире было активировано более миллиарда Android устройств, а настоящее время цифра превысила полтора миллиарда. В настоящее время вышла уже шестая версия Android. В данную операционную систему встроен магазин под названием GooglePlay. В нём пользователи могут покупать игры, фильмы, книги, и различные приложения [5].

Аналогичные приложения.

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

Например:

Азбука. Мир букв - это приложения для детей позволяет освоить им буквы и слова. Игра очень простоя, ребёнок может пройти её без помощи родителей имеет дружелюбный интерфейс. Приложение разделено на разделы, но все они отвечаю за развитие словарного запаса у ребёнка.

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

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

Выделим достоинства и недостатки нашего приложения по сравнения с его аналогами:

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

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

1.1 Аналитический обзор целевой аудитории

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

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

- Интересах, целях и задач пользователя.

-Демографических особенностях пользователя (пол, возраст).

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

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

По большей части нашими пользователями будут являться дети в среднем от 5 до 10 лет.

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

1.2 Анализ требований к приложению

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

Требование к программе и программному изделию.

Функциональные характеристики приложения:

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

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

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

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

Требования к надёжности:

Основное требование, чтобы программа правильно и корректно работала на разных входных данных, независимо от того, правильные они или нет.

Не должно быть временных задержек, больших 0,1 с. (чтобы пользователю было комфортно работать).

Программа должна сохранять работоспособность на протяжении всего сеанса пользователя вне зависимости от его длительности.

Условия эксплуатации:

Нет специальных требований.

Требования к составу и параметрам технических средств:

На техническое средство должна быть установлена ОС Android с версией выше 4.0.0.

Техническое средство должно, как минимум, иметь одноядерный процессор с частотой выше 1Ггц, оперативную память ёмкостью в 512 Мб, сенсорный экран (не менее 312х210).

2. Проектирование

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

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

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

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

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

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

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

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

2.2 Разработка интерфейса

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

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

Когда разрабатываешь приложение для детей, нужно смотреть на вещи с точки зрения ребёнка. Дети очень любопытны, они будут нажимать на всё, что видят в приложении. И могут заметить те вещи, которые взрослые не заметят. Большие проблемы может вызвать реклама так как, перемещаясь по приложению, дети боятся нажать что-то не то. Следовательно, случайное прикосновение к рекламе может усложнить работу с приложением ребёнку. Также перейдя по ссылке, ребёнок может не вернуться назад в приложение. Чтобы избавиться от этой проблемы следует задуматься, что реклама в приложение не нужна или её необходимо сделать неактивной.

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

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

Для разработки приложения мы используем среду Unity, которая обладает своими элементами управления.

Достоинством является то, что для элементов интерфейса можно задать авто масштабирование и проблема с расположение и размером элементов исчерпает себя.

Далее нам нужно определиться при помощи скольких рук будет осуществляться управления. Если наше приложение будет разработано для смартфонов, то проектирование нужно производить с учётом специфики управления одной рукой. И с учётом этих условий должно производиться тестирование. Но подвох есть в том, что на планшетах удобнее использовать две руки. Эта проблема решается путём разработки универсального интерфейса.

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

В среде Unity приложение представляется в виде сцен. Составим структуру нашего приложения.

Рисунок 1 - Схема сцен приложения

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

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

При нажатии на кнопку ребусы нас переведёт на сцену с уровнями ребусов, при выборе уровня нас перенаправит на сцену с заданием. После выполнения задания можно будет вернуться на сцену с уровнями.

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

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

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

3. Реализация

3.1 Разработка функций рабочей области

В среде Unity есть свой удобный интерфейс.

Рисунок 2 - Рабочая область Unity

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

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

Вот пример список наших сцен.

Перейдём непосредственно к нашим сценам. На главном экране расположим две кнопки это выход и переход на сцену с категориями.

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

Рисунок 3 - Список сцен приложения

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

Сцена с категориями.

Рисунок 5 - Меню категорий

На данной сцене представлены 3 категории, которые мы разрабатывали в приложении это математика, ребусы и загадки. При нажатии на нужную кнопку мы перейдём в желаемую категорию.

Перейдём в категорию ребусы.

Рисунок 6 - Список ребусов

На этой сцене представлены уровни, выберем один из них.

Рисунок 7 - Ребус

Вот пример одного из ребусов, при вводе правильного ответа выйдет соответствующее сообщение, если ответ будет введён неверно, то выйдет сообщение с просьбой попробовать ещё раз. Здесь для ввода данных используется стандартный функционал среды разработки, при нажатии на окно с надписью“Entertext” выйдет стандартная клавиатура, с помощью которой можно будет ввести ответ.

Перейдём к разделу математики. На данной сцене представлены математические операции: сложение, вычитание, умножение, деление. Выберем одну из них для перехода на сцену с заданием.

Рисунок 8 - Арифметические операции

Рисунок 9 - Математическая задача

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

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

Рисунок 10 - Список загадок

Вот пример уровня-загадки.

Рисунок 11 - Загадка

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

3.2 Разработка приложения на языке C#

В среде разработки Unity язык программирования C# играет не малую роль. Весь код разделён на 4 скрипта.

Первый скрипт “MenuS” используется для навигации меню, а также для загрузки информации в некоторые уровни. Нужно осуществить переход между сценами, так как все сцены добавлены в специальный список и пронумерованы, нам следует вызывать их по этому номеру.

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

public void MenuCategories(int ScreenID){

Application.LoadLevel(1);//Переход из меню в категории}

И в свойствах кнопки выбираем нужный скрипт.

Рисунок 12 - Свойства кнопки

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

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

Вот пример скрипта для одной кнопки.

public void Proverka3()

{pr = GameObject.Find("Otv").GetComponent<InputField>().text ;

if(pr == "Телевизор" || pr == "телевизор")

{

Mess="Верномолодец";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}else

{Mess=" Неверно попробуй ещё ";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;}}

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

Третий скрипт “Schet” , нужен для построения уровней для математической категории. Здесь используется одна сцена, но необходимо изменять алгоритмы, которые привязаны к кнопке проверки. Эта проблема решается с помощью switch-case. При выборе операции в разделе с математикой у нас присваивается значение переменной, которая в свою очередь указывает какой алгоритм необходимо использовать. Вот пример.

publicvoidsum()

{Q = 1;

Schet.n = 0;

Schet.add = 3;}

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

void Start () {

switch (MenuS.Q) {

case 1:

{Zn = "+";

x1 = Random.Range (0, 10);

x2 = Random.Range (0, 10);

y = x1 + x2;

}

break;

GameObject.Find ("Per1").GetComponent<Text> ().text = x1+" " +Zn+ " " + x2;}

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

На кнопку проверки также вешается свой алгоритм.

public void Algoritm(){

switch (MenuS.Q)

{

case 1:

{ee = int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);

if (ee == y) {

Message = "Верно, молодец";

n++;

add = add + 2;

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

x1 = Random.Range (0, 5 + add);

x2 = Random.Range (0, 5 + add);

y = x1 + x2;

GameObject.Find ("Per1").GetComponent<Text> ().text = x1 + " + " + x2;

GameObject.Find ("Scr").GetComponent<Text> ().text = "";

GameObject.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;

} else {

Message = "Неверно, попробуйещё.";

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

}}break;

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

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

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

public void v0()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "0";

}

public void v1()

{

GameObject.Find ("Scr").GetComponent<Text> ().text = GameObject.Find ("Scr").GetComponent<Text> ().text+"1";

}

Остальные кнопки, использующиеся для ввода ответа состоящего из цифр, созданы аналогично.

Четвёртый скрипт “Zagadki”, похож на математический скрипт. Также все действия происходят на одной сцене, на которой с помощью case меняются задачи.

void Start () {

switch (MenuS.Z) {

case 1:

{

GameObject.Find ("Text1").GetComponent<Text> ().text = "Пяточкомвземлекопаюсь, влужегрязнойискупаюсь.";

}

break;

case 2:

{GameObject.Find ("Text1").GetComponent<Text> ().text = "Где-тоспряталасьвлесах, ярко-рыжая...";}

break;

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

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

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

public void ZagadProv(){

switch (MenuS.Z)

{

case 1:

{

vvod = GameObject.Find ("Otvet").GetComponent<InputField> ().text;

if (vvod == "Свинья" || vvod == "свинья")

{

Mes = "Верно, молодец";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

else

{

Mes = "Неверно, попробуйещё.";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

}

break;

Аналогично реализованы другие уровни загадок.

4. Тестирование

4.1 Методика тестирования

Для тестирования возьмём методику функционального тестирования. Функциональное тестирование - это тестирование, в котором обозначаются исходные функциональные требования заказчика. Проведение данного тестирования позволяет проверить, как система в определённых условиях решает задачи поставленные пользователем. Тестирование делится на чёрный и белый ящики. Чёрный ящик - тестирование производится без доступа к самому коду, на основе входных и выходных данных. Белый ящик - тестирование, в котором тестировщик имеет доступ к коду [7].

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

К преимуществам функционального тестирования относятся:

- Имитируется фактическое использование системы.

- Имеется возможность своевременно выявить ошибки ПО, тем самым избежать их в дальнейшем использовании.

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

Недостатки:

- Можно упустить логические ошибки.

- Вероятно избыточное тестирование.

Составим функциональные требования к нашему приложению.

1. Корректная навигация по меня приложения. Чтобы работали все переходы между сценами.

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

3. Проверить ввод данных в разделе математика, где создана своя клавиатура.

4. Убедиться, чтобы система правильно реагировала на входные данные и выдавала соответствующие сообщения.

4.2 Результаты тестирования

Тестирование производиться на смартфоне Flyiq 4417 методом чёрного ящика, результаты тестирования предоставляются в соответствии с требованиями к приложению.

1. Проверка функций навигации приложения.

Проверяем переходы между сценами. При запуске приложения открывается главное меню, при нажатии на кнопку “Категории” нас переносит в меню с категориями, при нажатии на кнопку “Выход ” мы вышли из приложения.

Далее проверяем сцену с категориями. При нажатии на кнопку “Ребусы” нас перенесло на сцену с уровнями. При нажатии на кнопку “Математика” нас перенесло на сцену, где указаны математические операции. При нажатии на кнопку “Загадки” нас перенесло на сцену с уровнями загадок. При нажатии на кнопку “Назад” нас вернуло в главное меню.

Тестируем сцену с уровнями ребусов. При нажатии на кнопки “Ребус 1”- “Ребус 5” нам открывало сцены соответствующие уровню. Во всех уровнях работала кнопка “Назад”, при нажатии на которую нас возвращало на сцену со списком уровней. При нажатии на кнопку “Назад” которая находится на сцене с уровнями ребусов, нас перенесло на сцену с категориями.

Тестируем сцену с математическими операциями. При нажатии на все операции нам открывалась соответствующая сцена, внутри этой сцены работает кнопка “Назад”, при нажатии на которую нас возвращает на сцену с операциями. На сцене с операциямиработает кнопка “Назад, при нажатии на которую нас возвращает на сцену с категориями.

Тестируем сцену с уровнями загадок. При нажатии на кнопки “Загадка 1” - ”Загадка- 5” Нам открывало сцену с соответствующими загадками. Во всех загадках работала кнопка “Назад”, при нажатии на которую нас переносило на сцену со списком загадок. На самой сцене со списком загадок кнопка “Назад”, работа корректно, нам открывалась сцена с категориями.

По результатам тестирования ошибок не найдено.

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

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

3. Проверка ввода данных на сцене с математическими примерами, где ввод осуществляется с помощью кнопок.

Все кнопки от 0 до 9 работают корректно. При нажатии на них в поле для ответа появляется соответствующая цифра.При нажатии на кнопку “Стереть” поле для ввода отчищается. При нажатии на кнопку “Назад”, мы переходим на сцену со списком уровней.

4. Проверка обработки входных данных и реакция системы на них.

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

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

Рисунок 13 - Ребус

Рисунок 14 - Ребус

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

Проверим ещё один ребус. Также откроем уровень и введём правильный ответ.

Теперь введём неправильный ответ.

Рисунок 15 - Ребус

Рисунок 16 - Ребус

На данном уровне ошибок не найдено, все проверки прошли успешно.

По аналогии были проверены другие уровни в категории ребусы, ошибок в них не обнаружено.

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

Рисунок 17 - Математическая задача

Видим что пример составлен корректно. Аналогично мы проверили другие действия. Ошибок в построение примеров не найдено.

Далее посмотрим, как приложение выполняет проверку. Введём сначала неправильный ответ.

Рисунок 18 - Математическая задача

Приложение отреагировало правильно и выдало соответствующее сообщение. Далее введём правильный ответ.

Рисунок 19 - Математическая задача

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

Рисунок 20 - Математическая задача

Введём неправильный ответ.

Рисунок 21 - Математическая задача

Аналогично проверили другие математические операции, ошибок не найдено.

Последним проверим раздел загадок. Вводим правильный ответ.

Рисунок 22 - Загадка

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

Рисунок 23 - Загадка

Видим, что приложение отреагировало правильно при неверных входных данных. Проверим следующий уровень с загадками, введём правильный ответ.

Рисунок 24 - Загадка

Теперь введём неправильный ответ.

Рисунок 25 - Загадка

На данном уровне, приложение отреагировало правильно как на верные входные данные, так и на неверные.

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

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

Заключение

По результату выпускной квалификационной работы было разработано обучающее игровое приложение на платформе Android. При создании приложения я использовал среду разработки Unity 3D. Для написания скриптов использовался язык С#. При разработке приложения было учтено, что основной целевой аудиторией будут дети в среднем от 5 до 10 лет, следовательно интерфейс и навигация по приложения были сделаны интуитивно понятными и простыми. Задания в приложение также соответствуют возрастной категории пользователей и не являются сложными для восприятия детей. Даже если ребёнок не знаком с арифметическими операциями, он может разгадывать загадки и ребусы. По результатам тестирования можно сделать вывод, что приложение в целом удовлетворяет поставленным функциональным требованиям и работает корректно.

Список использованных источников

1. Программное обеспечение

2. Unity игровой движок

3. C Sharp

4. Java

5. Android

6. Целевая аудитория приложения

7. Функциональное тестирование

Приложение

Листинг программы

СкриптMenuS.cs.

usingUnityEngine;

usingSystem.Collections;

public class MenuS : MonoBehaviour {

public static int Q,Z;

// Use this for initialization

void Start () {

}

void Update () {}

public void MenuCategories(int ScreenID){

Application.LoadLevel(1);//Переход из меню в категории

}

public void CategoriesMenu(int ScreenID){

Application.LoadLevel(0);//Переход из категорий в меню

}

public void CategoriesMath(int ScreenID){

Application.LoadLevel(2);//Переход из категорий в меню

}

public void Quit(int ScreenID){

Application.Quit ();//Переход из категорий в меню

}

public void sum()

{

Q = 1;

Schet.n = 0;

Schet.add = 3;

}

public void sub()

{

Q = 2;

Schet.n = 0;

Schet.add = 3;

}

public void mult()

{

Q = 3;

Schet.n = 0;

Schet.add = 3;

}

public void div()

{

Q = 4;

Schet.n = 0;

Schet.add = 3;

}

public void ur()

{

Q = 5;

Schet.n = 0;

Schet.add = 3;

}

public void Z_Zlvl(int ScreenID){

Application.LoadLevel(6);//Переход из категорий в меню

}

public void z1()

{

Z = 1;

}

public void z2()

{

Z = 2;

}public void z3()

{

Z = 3;

}public void z4()

{

Z = 4;

}public void z5()

{

Z = 5;

}

public void Zlvl_Z(int ScreenID){

Application.LoadLevel(7);//Переход из категорий в меню

}

public void MathSchet(int ScreenID){

Application.LoadLevel (3);

}

public void LvlRebus(int ScreenID){

Application.LoadLevel(4);//Переход из меню в категории

}

public void RebusLvl(int ScreenID){

Application.LoadLevel(5);

}

public void RebusLvl2(int ScreenID){

Application.LoadLevel(8);

}

public void RebusLvl3(int ScreenID){

Application.LoadLevel(9);

}

public void RebusLvl4(int ScreenID){

Application.LoadLevel(10);

}

public void RebusLvl5(int ScreenID){

Application.LoadLevel(11);

}

// Update is called once per fram

}

СкриптRebus.cs.

usingUnityEngine;

usingSystem.Collections;

usingUnityEngine.UI;

public class Rebus : MonoBehaviour {

public string pr;

public string Mess;

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update ()

{

}

// Update is called once per frame

public void Proverka()

{

pr = GameObject.Find("Otv").GetComponent<InputField>().text ;

if(pr == "Кувшинка" || pr == "кувшинка")

{

Mess="Верномолодец";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

else

{

Mess=" Неверно попробуй ещё ";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

}

public void Proverka2()

{

pr = GameObject.Find("Otv").GetComponent<InputField>().text ;

if(pr == "Стрекоза" || pr == "стрекоза")

{

Mess="Верномолодец";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

else

{

Mess=" Неверно попробуй ещё ";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

}

public void Proverka3()

{

pr = GameObject.Find("Otv").GetComponent<InputField>().text ;

if(pr == "Телевизор" || pr == "телевизор")

{

Mess="Верномолодец";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

else

{

Mess=" Неверно попробуй ещё ";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

}

public void Proverka4()

{

pr = GameObject.Find("Otv").GetComponent<InputField>().text ;

if(pr == "Бабочка" || pr == "бабочка")

{

Mess="Верномолодец";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

else

{

Mess=" Неверно попробуй ещё ";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

}

public void Proverka5()

{

pr = GameObject.Find("Otv").GetComponent<InputField>().text ;

if(pr == "Шутка" || pr == "шутка")

{

Mess="Верномолодец";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

else

{

Mess=" Неверно попробуй ещё ";

GameObject.Find ("Message").GetComponent<Text> ().text = Mess;

}

}

}

СкриптSchet.cs.

usingUnityEngine;

using System.IO;

usingSystem.Collections;

usingUnityEngine.UI ;

public class Schet : MonoBehaviour {

public static int x1,x2,x3,x4,x5,y,n,ee,add=2;

public Text Per1,Rez;

public static string Zn;

public string Message, Sravn,vv;

// Use this for initialization

void Start () {

switch (MenuS.Q) {

case 1:

{//Переход из категорий в меню

Zn = "+";

x1 = Random.Range (0, 10);

x2 = Random.Range (0, 10);

y = x1 + x2;

}

break;

case 2:

{

Zn = "-";

x1 = Random.Range (5, 10);

x2 = Random.Range (0, 5 );

y = x1 - x2;

}

break;

case 3:

{

Zn = "*";

x1 = Random.Range (0, 4);

x2 = Random.Range (0, 4);;

y = x1 * x2;

}

break;

case 4:

{

Zn = "/";

x1 = 2;

x2 = 2;

y = x1 / x2;

}

break;

case 5:

{

Zn = "*";

x1 = Random.Range (0, 4);

x2 = Random.Range (0, 4);

y = x1 * x2;

}

break;

}

GameObject.Find ("Per1").GetComponent<Text> ().text = x1+" " +Zn+ " " + x2;

}

// Update is called once per frame

void Update () {

}

public void StartSumma()

{

//int.Parse(Sravn,out y);

}

public void v0()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "0";

}

public void v1()

{

GameObject.Find ("Scr").GetComponent<Text> ().text = GameObject.Find ("Scr").GetComponent<Text> ().text+"1";

}

public void v2()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "2";

}

public void v3()

{

GameObject.Find ("Scr").GetComponent<Text> ().text = GameObject.Find ("Scr").GetComponent<Text> ().text+"3";

}

public void v4()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "4";

}

public void v5()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "5";

}

public void v6()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "6";

}

public void v7()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "7";

}

public void v8()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "8";

}

public void v9()

{

GameObject.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "9";

}

public void clear()

{

GameObject.Find ("Scr").GetComponent<Text> ().text = "";

}

public void Algoritm(){

switch (MenuS.Q)

{

case 1:

{

ee = int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);

if (ee == y) {

Message = "Верно, молодец";

n++;

add = add + 2;

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

x1 = Random.Range (0, 5 + add);

x2 = Random.Range (0, 5 + add);

y = x1 + x2;

GameObject.Find ("Per1").GetComponent<Text> ().text = x1 + " + " + x2;

GameObject.Find ("Scr").GetComponent<Text> ().text = "";

GameObject.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;

} else {

Message = "Неверно, попробуйещё.";

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

}

}

break;

case 2:

{

ee = int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);

if (ee == y) {

Message = "Верно, молодец";

n++;

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

x1 = Random.Range (10 + add, 20 + add);

x2 = Random.Range (0, 10 + add);

y = x1 - x2;

GameObject.Find ("Per1").GetComponent<Text> ().text = x1 + " - " + x2;

GameObject.Find ("Scr").GetComponent<Text> ().text = "";

GameObject.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;

} else {

Message = "Неверно, попробуйещё.";

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

}

}

break;

case 3:

{

ee = int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);

if (ee == y) {

Message = "Верно, молодец";

n++;

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

x1 = Random.Range (1, 1 + add);

x2 = Random.Range (1, 1 + add);

y = x1 * x2;

GameObject.Find ("Per1").GetComponent<Text> ().text = x1 + " * " + x2;

GameObject.Find ("Scr").GetComponent<Text> ().text = "";

GameObject.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;

} else {

Message = "Неверно, попробуйещё.";

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

}

}

break;

case 4:

{

ee = int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);

if (ee == y) {

Message = "Верно, молодец";

n++;

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

x1 = Random.Range (4 + add, 10 + add);

if(x1%2!=0)

{x1=x1+1;}

x2 = Random.Range (2, x1/2);

while(x1%x2!=0)

{x1 = Random.Range (4 + add, 20 + add);

x2 = Random.Range (2, x1/2+1);}

y = x1 / x2;

GameObject.Find ("Per1").GetComponent<Text> ().text = x1 + " / " + x2;

GameObject.Find ("Scr").GetComponent<Text> ().text = "";

GameObject.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;

} else {

Message = "Неверно, попробуйещё.";

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

}

}

break;

case 5:

{

ee = int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);

if (ee == y) {

Message = "Верно, молодец";

n++;

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

x1 = Random.Range (1, 1 + add);

x2 = Random.Range (1, 1 + add);

y = x1 * x2;

GameObject.Find ("Per1").GetComponent<Text> ().text = x1 + " * " + x2;

GameObject.Find ("Scr").GetComponent<Text> ().text = "";

GameObject.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;

} else {

Message = "Неверно, попробуйещё.";

GameObject.Find ("Message").GetComponent<Text> ().text = Message;

}}

break; }

}

}

СкриптZagadki.cs.

usingUnityEngine;

usingSystem.Collections;

using System.IO;

usingUnityEngine.UI ;

public class Zagadki : MonoBehaviour {

public static string Zag;

public string Mes, vvod;

// Use this for initialization

void Start () {

switch (MenuS.Z) {

case 1:

{

GameObject.Find ("Text1").GetComponent<Text> ().text = "Пяточком в землекопаюсь, в лужегрязнойискупаюсь.";

}

break;

case 2:

{

GameObject.Find ("Text1").GetComponent<Text> ().text = "Где-тоспряталась в лесахярко-рыжая...";

}

break;

case 3:

{

GameObject.Find ("Text1").GetComponent<Text> ().text = "Дразнишь, онакусается. Погладишь, уже ласкается. На цепи она сидит, дом всегда наш сторожит.";

}

break;

case 4:

{

GameObject.Find ("Text1").GetComponent<Text> ().text = "Пыль увидит, заворчит, а потом проглотит.";

}

break;

case 5:

{

GameObject.Find ("Text1").GetComponent<Text> ().text = "В Москве говорят, а у нас слышно.";

}

break;

}

}

// Update is called once per frame

void Update () {

}

public void ZagadProv(){

switch (MenuS.Z)

{

case 1:

{

vvod = GameObject.Find ("Otvet").GetComponent<InputField> ().text;

if (vvod == "Свинья" || vvod == "свинья" || vvod == "Свинка" || vvod == "свинка" || vvod == "Поросёнок" || vvod == "поросёнок" || vvod == "Поросенок" || vvod == "поросенок" )

{

Mes = "Верно, молодец";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

else

{

Mes = "Неверно, попробуйещё.";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

}

break;

case 2:

{

vvod = GameObject.Find ("Otvet").GetComponent<InputField> ().text;

if (vvod == "Лиса" || vvod == "лиса" || vvod == "Лисица" || vvod == "лисица")

{

Mes = "Верно, молодец";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

else

{

Mes = "Неверно, попробуйещё.";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

}

break;

case 3:

{

vvod = GameObject.Find ("Otvet").GetComponent<InputField> ().text;

if (vvod == "Собака" || vvod == "собака" || vvod == "Собачка" || vvod == "собакча" || vvod == "Пёс" || vvod == "пёс" || vvod == "Пес" || vvod == "пес" )

{

Mes = "Верно, молодец";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

else

{

Mes = "Неверно, попробуйещё.";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

}

break;

case 4:

{

vvod = GameObject.Find ("Otvet").GetComponent<InputField> ().text;

if (vvod == "Пылесос" || vvod == "пылесос")

{

Mes = "Верно, молодец";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

else

{

Mes = "Неверно, попробуйещё.";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

}

break;

case 5:

{

vvod = GameObject.Find ("Otvet").GetComponent<InputField> ().text;

if (vvod == "Радио" || vvod == "радио")

{

Mes = "Верно, молодец";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

else

{

Mes = "Неверно, попробуйещё.";

GameObject.Find ("Mes").GetComponent<Text> ().text = Mes;

}

}

break;

}

}

}

Размещено на Allbest.ru


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

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

    дипломная работа [3,4 M], добавлен 12.08.2017

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

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

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

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

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

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

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

    дипломная работа [3,4 M], добавлен 19.01.2017

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

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

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

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

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