Аналитический обзор целевой аудитории
Имеется много различных методов исследования целевой аудитории - анкетирование, анализ деятельности, проведение опросов и контент анализ. Требуется провести количественные и качественные исследования.
Итак, проведём анализ целевой аудитории. Для этого соберём данные, как и кто, может пользоваться нашим приложением, нам потребуется информацию о:
Интересах, целях и задач пользователя.
Демографических особенностях пользователя (пол, возраст).
Психографических особенностях пользователя (чем занимается, привычки, умения работы с компьютерной техникой, потребности и мотивы).
Среде, в которой пользователь будет пользоваться вашим приложением.
По большей части нашими пользователями будут являться дети в среднем от 5 до 10 лет.
Основная цель детей, или их родителей это научиться считать и развить словарный запас ребёнка. В основной массе наши пользователи будут уже иметь некое представление о счёте и буквах. В наше время детей не нудно обучать пользованию смартфоном так, как многие пользовались, а у некоторых имеются личные смартфоны [6].
.2 Анализ требований к приложению
Программный продукт предназначен для детей и школьников, содержит определённые разделы разных сфер образовательной программы для развития умственных способностей пользователя.
Требование к программе и программному изделию.
Функциональные характеристики приложения:
корректное отображение всего содержимого на экране (объектов и текста), чтобы у пользователя не возникали трудности и раздражение при чтение текста или просмотра картинки.
корректный ввод команд и вывод данных, чтобы пользователь мог вводить данные и это не вызывало у него никаких затруднений, также важно чтобы информация выдаваемая приложением была правильной.
обработка ответов и вывод результата (верно или нет), чтобы при вводе ответа произвёлся анализ верного значения с значением которое задал пользователь, и вывелось соответствующее сообщение.
ведение статистики по ответам пользователя, чтобы как минимум велась информация о том, сколько правильных ответов дал пользователь.
Требования к надёжности:
Основное требование, чтобы программа правильно и корректно работала на разных входных данных, независимо от того, правильные они или нет.
Не должно быть временных задержек, больших 0,1 с. (чтобы пользователю было комфортно работать).
Программа должна сохранять работоспособность на протяжении всего сеанса пользователя вне зависимости от его длительности.
Условия эксплуатации:
Нет специальных требований.
На техническое средство должна быть установлена ОС Android с версией выше 4.0.0.
Техническое средство должно, как минимум, иметь одноядерный процессор с частотой выше 1Ггц, оперативную память ёмкостью в 512 Мб, сенсорный экран (не менее 312х210).
2. Проектирование
.1 Разработка алгоритмов приложения
Наше приложение подразделено на категории, следовательно, для каждой из них будут применяться свои алгоритмы. Сделаем три отдельных файла на каждую категорию. И добавим ещё один файл, который будет осуществлять переход между сценами.
Для математического раздела будет самый сложный алгоритм, так как необходимо реализовать автоматический подбор примеров для решения.
Со сложением всё просто подбираются два случайных числа в заданном диапазоне и складываются, после чего результат сложения сравнивается с ответом введённым пользователем. С каждым правильным ответом увеличивается диапазон подбора чисел, а это значит, что сложность примеров повышается.
Алгоритм вычитания отличается от алгоритма сложения тем что диапазон чисел необходимо сделать таким образом чтобы не получалось отрицательных значений, ведь наше приложение для детей и оно не подразумевает знание отрицательных чисел. Проблема решается путём изменения диапазона уменьшаемого и вычитаемого чисел, таким образом, чтобы диапазон уменьшаемого был больше диапазона вычитаемого. А значит, что разность получится положительной. После подбора чисел разность сравнивается с ответом, который ввёл пользователь.
Алгоритм умножение аналогичен алгоритму сложения, также подбираем два случайных числа в заданном диапазоне, после чего складываем их и сравниваем результат с ответом пользователя.
Самый сложный алгоритм деления, так как нам нужно подобрать числа таким образом, чтобы у нас получалось деление нацело или без остатка. Для этого диапазон чисел берём также как и у вычитания, то есть диапазон подбора числа для делимого будет больше чем диапазон подбора числа для делителя. Далее осуществляется деление и если число получилось с остатком, то вся операция повторяется пока не получиться деление нацело. После этого пример выводится на экран и пользователь вводит свой вариант ответа, после чего ответ введённый пользователем и правильный результат от деления сравниваются.
Если пользователь ответил правильно, то автоматически подбирается следующий пример в заданном действии. Ведётся счётчик правильных ответов. Если ответ введён неверно, то пользователь может повторять попытку пока не решит пример.
.2 Разработка интерфейса
Важнейший фактор проектирования приложения, это пользовательский интерфейс, если продумать сценарий использования, но не просчитать, удобен ли тот или иной элемент в использовании на мобильном устройстве. Может сложиться ситуация при которой, у пользователя будет вызвано раздражение из-за того что ему сложно проходить уровни и управлять игрой. Использование смартфона не должно доставлять неудобств окружающим людям. Например, не нужно писать приложение, которое управляется голосом.
Отсюда можно выделить следующее требование, что наше приложение не должно доставлять дискомфорта пользователю и окружающим его людям. Нужно минимизировать управление голосом, также если в приложение будет музыка, то сделать её регулируемым уровнем громкости.
Когда разрабатываешь приложение для детей, нужно смотреть на вещи с точки зрения ребёнка. Дети очень любопытны, они будут нажимать на всё, что видят в приложении. И могут заметить те вещи, которые взрослые не заметят. Большие проблемы может вызвать реклама так как, перемещаясь по приложению, дети боятся нажать что-то не то. Следовательно, случайное прикосновение к рекламе может усложнить работу с приложением ребёнку. Также перейдя по ссылке, ребёнок может не вернуться назад в приложение. Чтобы избавиться от этой проблемы следует задуматься, что реклама в приложение не нужна или её необходимо сделать неактивной.
Пользовательский интерфейс должен быть универсальным так, как смартфоны обладают различными размерами экранов и имеют разные предназначения. Смартфоны обладают обычной сенсорной клавиатурой, которая легко вызывается из ОС Android и может использоваться для ввода информации в нашем приложении.
Широкие возможности даёт сенсорный экран, в смысле использования элементов интерфейса. Следовательно, получается более функциональный и удобный интерфейс.
Для разработки приложения мы используем среду Unity, которая обладает своими элементами управления.
Достоинством является то, что для элементов интерфейса можно задать авто масштабирование и проблема с расположение и размером элементов исчерпает себя.
Далее нам нужно определиться при помощи скольких рук будет осуществляться управления. Если наше приложение будет разработано для смартфонов, то проектирование нужно производить с учётом специфики управления одной рукой. И с учётом этих условий должно производиться тестирование. Но подвох есть в том, что на планшетах удобнее использовать две руки. Эта проблема решается путём разработки универсального интерфейса.
Минимизируем количество кнопок, которые будут использоваться в процессе управления и навигации приложения. Например, если в приложении нужно выполнить операцию в три шага, то для осуществления навигации по интерфейсу должна быть возможность осуществлять нужные действия путём трёхкратного нажатия по одной кнопке, если у пользователя стоят значения по умолчанию. А если это потребует нажатия трёх разных кнопок, то пользователю придётся переводить взгляд между ними. Это прерывает ход мыслей и отвлекает внимание.
В среде Unity приложение представляется в виде сцен. Составим структуру нашего приложения.
Рисунок 1 - Схема сцен приложения
Получается 9 сцен, но каждый уровень ребусов будет сделан отдельной сценой. Уровни загадок и математики будут состоять из одной сцены, на них будут изменяться данные, тем самым будет получаться другой уровень.
На главном экране будет располагаться две кнопки это выход и категории. При нажатии на кнопку выход будет осуществлён выход их приложения, при нажатии на категории будет произведён переход на сцену, на который перечислены наши разделы, а именно ребусы, математика, и загадки.
При нажатии на кнопку ребусы нас переведёт на сцену с уровнями ребусов, при выборе уровня нас перенаправит на сцену с заданием. После выполнения задания можно будет вернуться на сцену с уровнями.
При нажатии на кнопку математика мы перейдём на сцену, на которые представлены математические операции (сложение, умножение, деление, вычитание), после выбора операции мы перейдём на сцену с заданием. После выполнения задания можно будет вернуться на сцену с уровнями.
При нажатии на кнопку загадки мы перейдём на сцену, на которой можно будет выбрать загадку, после выбора появится сцена с заданием. После того как задание будет выполнено пользователь может вернуться на сцену с уровнями.
Во всех сценах имеется кнопка назад, для облегчения навигации по приложению.
3. Реализация
.1 Разработка функций рабочей области
В среде Unity есть свой удобный интерфейс.
Рисунок 2 - Рабочая область Unity
Для начало нужно сделать навигацию по приложению - это легко осуществить путём нажатия на кнопку, после чего мы перейдём на нужную сцену. Кнопки, отвечающие за ввод, уже есть в среде разработки, нам нужно только воспользоваться ими. Каждую сцену нам нужно зарегистрировать, чтобы в дальнейшем мы могли её вызвать в нашем коде.
Сцена - это некая композиция, на которой мы располагаем все наши объекты (текст, кнопки, поля ввода, различные изображения и т.д.) и к которой можно обращаться по её номеру.
Вот пример список наших сцен.
Перейдём непосредственно к нашим сценам. На главном экране расположим две кнопки это выход и переход на сцену с категориями.
Если нажать выход то мы выйдем из приложения, а если нажать на категории, то мы перейдём на сцену с ними.
Рисунок 3 - Список сцен приложения
Рисунок 4 - Главное меню
Сцена с категориями.
Рисунок 5 - Меню категорий
На данной сцене представлены 3 категории, которые мы разрабатывали в приложении это математика, ребусы и загадки. При нажатии на нужную кнопку мы перейдём в желаемую категорию.
Перейдём в категорию ребусы.
Рисунок 6 - Список ребусов
На этой сцене представлены уровни, выберем один из них.
Рисунок 7 - Ребус
Вот пример одного из ребусов, при вводе правильного ответа выйдет соответствующее сообщение, если ответ будет введён неверно, то выйдет сообщение с просьбой попробовать ещё раз. Здесь для ввода данных используется стандартный функционал среды разработки, при нажатии на окно с надписьюEntertext выйдет стандартная клавиатура, с помощью которой можно будет ввести ответ.
Перейдём к разделу математики. На данной сцене представлены математические операции: сложение, вычитание, умножение, деление. Выберем одну из них для перехода на сцену с заданием.
Рисунок 8 - Арифметические операции
Рисунок 9 - Математическая задача
За все математические операции отвечает одна сцена, изменяются лишь алгоритмы при выборе операции.
Перейдём к загадкам в отличие от ребусов, здесь уровни реализованы через одну сцену путём замены элементов на ней в зависимости от выбора уровня, а список уровней аналогичен списку уровней в ребусах.
Рисунок 10 - Список загадок
Вот пример уровня-загадки.
Рисунок 11 - Загадка
Остальные уровни аналогичны этому, но отличаются сложностью загадок.
.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 ;
{="Верномолодец";.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 () {(MenuS.Q) {1:
{Zn = "+";= Random.Range (0, 10);= Random.Range (0, 10);= x1 + x2;
};.Find ("Per1").GetComponent<Text> ().text = x1+" " +Zn+ " " + x2;}
Всё что находится в voidstart, запускается при старте сцены со счётом. При помощи механизма Switch-case производится выбор нужного алгоритма, который создаёт сам пример и выводить его на экран.
На кнопку проверки также вешается свой алгоритм.
public void Algoritm(){(MenuS.Q)
{1:
{ee = int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);(ee == y) {= "Верно, молодец";++;= add + 2;.Find ("Message").GetComponent<Text> ().text = Message;= Random.Range (0, 5 + add);= Random.Range (0, 5 + add);= x1 + x2;.Find ("Per1").GetComponent<Text> ().text = x1 + " + " + x2;.Find ("Scr").GetComponent<Text> ().text = "";.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;
} else {= "Неверно, попробуйещё.";.Find ("Message").GetComponent<Text> ().text = Message;
}}break;
При нажатии на кнопку производится сравнения результата введённого пользователем с правильным ответом, если ответ введёт неверно, то выводится соответствующее сообщение. Если ответ верен, то генерируется следующий пример и выводится на экран. Также на экране ведётся статистика правильных ответов.
Алгоритмы для других действий сделаны аналогично, весь код можно посмотреть в приложении.
Также на этой сцене для ввода используется не стандартная клавиатура, а специально созданные для этого кнопки. Вот пример пары из них:
void v0()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "0";
}void v1()
{.Find ("Scr").GetComponent<Text> ().text = GameObject.Find ("Scr").GetComponent<Text> ().text+"1";
}
Остальные кнопки, использующиеся для ввода ответа состоящего из цифр, созданы аналогично.
Четвёртый скрипт Zagadki, похож на математический скрипт. Также все действия происходят на одной сцене, на которой с помощью case меняются задачи.
void Start () {(MenuS.Z) {1:
{.Find ("Text1").GetComponent<Text> ().text = "Пяточкомвземлекопаюсь, влужегрязнойискупаюсь.";
};2:
{GameObject.Find ("Text1").GetComponent<Text> ().text = "Где-тоспряталасьвлесах, ярко-рыжая...";}
break;
Сами загадки и ответы на них находятся в коде приложения.
При выборе уровня загружается соответствующая загадка. Ввод ответу пользователь осуществляет с помощью стандартной клавиатуры Android.
При нажатии на кнопку сравнения происходит проверка ответа. Алгоритм, который привязан к кнопке сравнения, загружается также с помощью case.
public void ZagadProv(){(MenuS.Z)
{1:
{= GameObject.Find ("Otvet").GetComponent<InputField> ().text;(vvod == "Свинья" || vvod == "свинья")
{= "Верно, молодец";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
{= "Неверно, попробуйещё.";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
};
Аналогично реализованы другие уровни загадок.
4. Тестирование
.1 Методика тестирования
Для тестирования возьмём методику функционального тестирования. Функциональное тестирование - это тестирование, в котором обозначаются исходные функциональные требования заказчика. Проведение данного тестирования позволяет проверить, как система в определённых условиях решает задачи поставленные пользователем. Тестирование делится на чёрный и белый ящики. Чёрный ящик - тестирование производится без доступа к самому коду, на основе входных и выходных данных. Белый ящик - тестирование, в котором тестировщик имеет доступ к коду [7].
Для функционального тестирования мы выберем метод чёрного ящика. В данной методике есть свои преимущества и недостатки.
К преимуществам функционального тестирования относятся:
Имитируется фактическое использование системы.
Имеется возможность своевременно выявить ошибки ПО, тем самым избежать их в дальнейшем использовании.
Ошибки можно обнаружить на раннем этапе жизненного цикла, тем самым мы сэкономим средства.
Недостатки:
Можно упустить логические ошибки.
Вероятно избыточное тестирование.
Составим функциональные требования к нашему приложению.
.Корректная навигация по меня приложения. Чтобы работали все переходы между сценами.
.Проверить работоспособность ввода данных, который осуществляется с помощью вызова виртуальной клавиатуры. Данный метод ввода данных используется в загадках и ребусах.
.Проверить ввод данных в разделе математика, где создана своя клавиатура.
.Убедиться, чтобы система правильно реагировала на входные данные и выдавала соответствующие сообщения.
4.2Результаты тестирования
Тестирование производиться на смартфоне Flyiq 4417 методом чёрного ящика, результаты тестирования предоставляются в соответствии с требованиями к приложению.
.Проверка функций навигации приложения.
Проверяем переходы между сценами. При запуске приложения открывается главное меню, при нажатии на кнопку Категории нас переносит в меню с категориями, при нажатии на кнопку Выход мы вышли из приложения.
Далее проверяем сцену с категориями. При нажатии на кнопку Ребусы нас перенесло на сцену с уровнями. При нажатии на кнопку Математика нас перенесло на сцену, где указаны математические операции. При нажатии на кнопку Загадки нас перенесло на сцену с уровнями загадок. При нажатии на кнопку Назад нас вернуло в главное меню.
Тестируем сцену с уровнями ребусов. При нажатии на кнопки Ребус 1- Ребус 5 нам открывало сцены соответствующие уровню. Во всех уровнях работала кнопка Назад, при нажатии на которую нас возвращало на сцену со списком уровней. При нажатии на кнопку Назад которая находится на сцене с уровнями ребусов, нас перенесло на сцену с категориями.
Тестируем сцену с уровнями загадок. При нажатии на кнопки Загадка 1 - Загадка- 5 Нам открывало сцену с соответствующими загадками. Во всех загадках работала кнопка Назад, при нажатии на которую нас переносило на сцену со списком загадок. На самой сцене со списком загадок кнопка Назад, работа корректно, нам открывалась сцена с категориями.
По результатам тестирования ошибок не найдено.
.Проверка ввода данных с помощью виртуальной клавиатуры.
На сценах с загадками и ребусам ввод данных работает корректно. При нажатии на поле ввода вызывалась виртуальная клавиатура, на которой есть все символы необходимые для ответа. Сами символы в поле ввода вводятся и отображаются там корректно.
.Проверка ввода данных на сцене с математическими примерами, где ввод осуществляется с помощью кнопок.
Все кнопки от 0 до 9 работают корректно. При нажатии на них в поле для ответа появляется соответствующая цифра.При нажатии на кнопку Стереть поле для ввода отчищается. При нажатии на кнопку Назад, мы переходим на сцену со списком уровней.
.Проверка обработки входных данных и реакция системы на них.
Начнём проверку со сцен ребусов. Откроем сцену и введём правильный ответ. Нужно убедиться, что приложение реагирует правильно на входные данные и выдаёт верные выходные данные.
В приложении произошла проверка введённого слова, и нам выдалось соответствующее сообщение. Теперь введём неправильный ответ.
Рисунок 13 - Ребус
Рисунок 14 - Ребус
Видим, что на неправильные данные приложение отреагировало иначе, соответственно делаем вывод, что данный уровень работает корректно.
Проверим ещё один ребус. Также откроем уровень и введём правильный ответ.
Теперь введём неправильный ответ.
Рисунок 15 - Ребус
Рисунок 16 - Ребус
На данном уровне ошибок не найдено, все проверки прошли успешно.
По аналогии были проверены другие уровни в категории ребусы, ошибок в них не обнаружено.
Далее проверим работу сцены с математикой. Для начала нам нужно проверить, чтобы при выборе операции выдавалась соответствующая информация. Выберем операцию сложения.
Рисунок 17 - Математическая задача
Видим что пример составлен корректно. Аналогично мы проверили другие действия. Ошибок в построение примеров не найдено.
Далее посмотрим, как приложение выполняет проверку. Введём сначала неправильный ответ.
Рисунок 18 - Математическая задача
Приложение отреагировало правильно и выдало соответствующее сообщение. Далее введём правильный ответ.
Рисунок 19 - Математическая задача
Видим что, приложение проверило наш пример и выдало соответствующе сообщение, а также сгенерировало новый пример, и прибавила единицу к правильным ответам. Проверим ещё одно арифметическое действие. Введём правильный ответ.
Рисунок 20 - Математическая задача
Введём неправильный ответ.
Рисунок 21 - Математическая задача
Аналогично проверили другие математические операции, ошибок не найдено.
Последним проверим раздел загадок. Вводим правильный ответ.
Рисунок 22 - Загадка
Видим, что приложение сработало правильно и выдало соответствующее сообщение, также оно работает на словах синонимах. Следующим шагом нужно проверить загадку на неверные входные данные.
Рисунок 23 - Загадка
Видим, что приложение отреагировало правильно при неверных входных данных. Проверим следующий уровень с загадками, введём правильный ответ.
Рисунок 24 - Загадка
Теперь введём неправильный ответ.
Рисунок 25 - Загадка
На данном уровне, приложение отреагировало правильно как на верные входные данные, так и на неверные.
По результатам проверки других уровней с загадками, ошибок не найдено.
По результатам функционального тестирования методом чёрного ящика можно сделать вывод том, что приложение работает корректно и весь функционал, описанный в требованиях, также работает корректно. Ошибок по результатам тестирования не выявлено.
Заключение
По результату выпускной квалификационной работы было разработано обучающее игровое приложение на платформе Android. При создании приложения я использовал среду разработки Unity 3D. Для написания скриптов использовался язык С#. При разработке приложения было учтено, что основной целевой аудиторией будут дети в среднем от 5 до 10 лет, следовательно интерфейс и навигация по приложения были сделаны интуитивно понятными и простыми. Задания в приложение также соответствуют возрастной категории пользователей и не являются сложными для восприятия детей. Даже если ребёнок не знаком с арифметическими операциями, он может разгадывать загадки и ребусы. По результатам тестирования можно сделать вывод, что приложение в целом удовлетворяет поставленным функциональным требованиям и работает корректно.
Список использованных источников
1.Программное обеспечение
2.Unity игровой движок
.C Sharp
4.Java
5.Android
6.Целевая аудитория приложения
.Функциональное тестирование
Приложение
Листинг программы
СкриптMenuS.cs.
usingUnityEngine;.Collections;class MenuS : MonoBehaviour {static int Q,Z;
// Use this for initializationStart () {
}Update () {}void MenuCategories(int ScreenID){.LoadLevel(1);//Переход из меню в категории
}void CategoriesMenu(int ScreenID){.LoadLevel(0);//Переход из категорий в меню
}void CategoriesMath(int ScreenID){.LoadLevel(2);//Переход из категорий в меню
}void Quit(int ScreenID){.Quit ();//Переход из категорий в меню
}void sum()
{= 1;.n = 0;.add = 3;
}void sub()
{= 2;.n = 0;.add = 3;
}void mult()
{= 3;.n = 0;.add = 3;
}void div()
{= 4;.n = 0;.add = 3;
}void ur()
{= 5;.n = 0;.add = 3;
}void z1()
{= 1;
}void z2()
{= 2;
}public void z3()
{= 3;
}public void z4()
{= 4;
}public void z5()
{= 5;
}void Zlvl_Z(int ScreenID){.LoadLevel(7);//Переход из категорий в меню
}void MathSchet(int ScreenID){
.LoadLevel (3);
}void LvlRebus(int ScreenID){.LoadLevel(4);//Переход из меню в категории
}void RebusLvl(int ScreenID){.LoadLevel(5);
}void RebusLvl2(int ScreenID){.LoadLevel(8);
}void RebusLvl3(int ScreenID){.LoadLevel(9);
}void RebusLvl4(int ScreenID){.LoadLevel(10);
}void RebusLvl5(int ScreenID){.LoadLevel(11);
}
// Update is called once per fram
}
СкриптRebus.cs.;.Collections;.UI;class Rebus : MonoBehaviour {string pr;string Mess;
// Use this for initializationStart () {
}
// Update is called once per frameUpdate ()
{
}
// Update is called once per framevoid Proverka()
{= GameObject.Find("Otv").GetComponent<InputField>().text ; (pr == "Кувшинка" || pr == "кувшинка")
{="Верномолодец";.Find ("Message").GetComponent<Text> ().text = Mess;
}
else
{
Mess=" Неверно попробуй ещё ";
GameObject.Find ("Message").GetComponent<Text> ().text = Mess;
}
}void Proverka2()
{= GameObject.Find("Otv").GetComponent<InputField>().text ; (pr == "Стрекоза" || pr == "стрекоза")
{="Верномолодец";.Find ("Message").GetComponent<Text> ().text = Mess;
}
else
{
Mess=" Неверно попробуй ещё ";
GameObject.Find ("Message").GetComponent<Text> ().text = Mess;
}
}void Proverka3()
{= GameObject.Find("Otv").GetComponent<InputField>().text ; (pr == "Телевизор" || pr == "телевизор")
{="Верномолодец";.Find ("Message").GetComponent<Text> ().text = Mess;
}
else
{
Mess=" Неверно попробуй ещё ";
GameObject.Find ("Message").GetComponent<Text> ().text = Mess;
}
}void Proverka4()
{= GameObject.Find("Otv").GetComponent<InputField>().text ; (pr == "Бабочка" || pr == "бабочка")
{="Верномолодец";.Find ("Message").GetComponent<Text> ().text = Mess;
}
else
{
Mess=" Неверно попробуй ещё ";
GameObject.Find ("Message").GetComponent<Text> ().text = Mess;
}
}void Proverka5()
{= GameObject.Find("Otv").GetComponent<InputField>().text ; (pr == "Шутка" || pr == "шутка")
{="Верномолодец";.Find ("Message").GetComponent<Text> ().text = Mess;
}
else
{
GameObject.Find ("Message").GetComponent<Text> ().text = Mess;
}
}
}
СкриптSchet.cs.;System.IO;.Collections;.UI ;class Schet : MonoBehaviour {static int x1,x2,x3,x4,x5,y,n,ee,add=2;Text Per1,Rez;static string Zn;string Message, Sravn,vv;
// Use this for initializationStart () { (MenuS.Q) {
case 1:
{//Переход из категорий в меню
Zn = "+";= Random.Range (0, 10);= Random.Range (0, 10);= x1 + x2;
};2:
{= "-";= Random.Range (5, 10);= Random.Range (0, 5 );= x1 - x2;
};3:
{= "*";= Random.Range (0, 4);= Random.Range (0, 4);;= x1 * x2;
};4:
{= "/";= 2;= 2;= x1 / x2;
};5:
{= "*";= Random.Range (0, 4);= Random.Range (0, 4);= x1 * x2;
};
}.Find ("Per1").GetComponent<Text> ().text = x1+" " +Zn+ " " + x2;
}
// Update is called once per frameUpdate () {
}void StartSumma()
{
//int.Parse(Sravn,out y);
}void v0()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "0";
}void v1()
{.Find ("Scr").GetComponent<Text> ().text = GameObject.Find ("Scr").GetComponent<Text> ().text+"1";
}void v2()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "2";
}void v3()
{.Find ("Scr").GetComponent<Text> ().text = GameObject.Find ("Scr").GetComponent<Text> ().text+"3";
}void v4()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "4";
}void v5()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "5";
}void v6()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "6";
}void v7()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "7";
}void v8()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "8";
}void v9()
{.Find ("Scr").GetComponent<Text> ().text =GameObject.Find ("Scr").GetComponent<Text> ().text+ "9";
}void clear()
{.Find ("Scr").GetComponent<Text> ().text = "";
}void Algoritm(){(MenuS.Q)
{1:
{= int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);(ee == y) {= "Верно, молодец";++;= add + 2;.Find ("Message").GetComponent<Text> ().text = Message;= Random.Range (0, 5 + add);= Random.Range (0, 5 + add);= x1 + x2;.Find ("Per1").GetComponent<Text> ().text = x1 + " + " + x2;.Find ("Scr").GetComponent<Text> ().text = "";.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;
} else {= "Неверно, попробуйещё.";.Find ("Message").GetComponent<Text> ().text = Message;
}
};2:
{= int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);(ee == y) {= "Верно, молодец";++;.Find ("Message").GetComponent<Text> ().text = Message;= Random.Range (10 + add, 20 + add);= Random.Range (0, 10 + add);= x1 - x2;.Find ("Per1").GetComponent<Text> ().text = x1 + " - " + x2;.Find ("Scr").GetComponent<Text> ().text = "";.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;
} else {= "Неверно, попробуйещё.";.Find ("Message").GetComponent<Text> ().text = Message;
}
};3:
{= int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);(ee == y) {= "Верно, молодец";++;.Find ("Message").GetComponent<Text> ().text = Message;= Random.Range (1, 1 + add);= Random.Range (1, 1 + add);= x1 * x2;.Find ("Per1").GetComponent<Text> ().text = x1 + " * " + x2;.Find ("Scr").GetComponent<Text> ().text = "";.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;
} else {= "Неверно, попробуйещё.";.Find ("Message").GetComponent<Text> ().text = Message;
}
};4:
{= int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);(ee == y) {= "Верно, молодец";++;.Find ("Message").GetComponent<Text> ().text = Message;= Random.Range (4 + add, 10 + add);(x1%2!=0)
{x1=x1+1;}= Random.Range (2, x1/2);(x1%x2!=0)
{x1 = Random.Range (4 + add, 20 + add);= Random.Range (2, x1/2+1);}= x1 / x2;.Find ("Per1").GetComponent<Text> ().text = x1 + " / " + x2;.Find ("Scr").GetComponent<Text> ().text = "";.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;
} else {= "Неверно, попробуйещё.";.Find ("Message").GetComponent<Text> ().text = Message;
}
};5:
{= int.Parse (GameObject.Find ("Scr").GetComponent<Text> ().text);(ee == y) {= "Верно, молодец";++;.Find ("Message").GetComponent<Text> ().text = Message;= Random.Range (1, 1 + add);= Random.Range (1, 1 + add);= x1 * x2;.Find ("Per1").GetComponent<Text> ().text = x1 + " * " + x2;.Find ("Scr").GetComponent<Text> ().text = "";.Find ("Otv").GetComponent<Text> ().text = " Правильныхответов : " + n;
} else {= "Неверно, попробуйещё.";.Find ("Message").GetComponent<Text> ().text = Message;
}}; }
}
СкриптZagadki.cs.;.Collections;System.IO;.UI ;class Zagadki : MonoBehaviour {static string Zag;string Mes, vvod;
// Use this for initializationStart () {(MenuS.Z) {1:
{.Find ("Text1").GetComponent<Text> ().text = "Пяточком в землекопаюсь, в лужегрязнойискупаюсь.";
};2:
{.Find ("Text1").GetComponent<Text> ().text = "Где-тоспряталась в лесахярко-рыжая...";
};3:
{.Find ("Text1").GetComponent<Text> ().text = "Дразнишь, онакусается. Погладишь, уже ласкается. На цепи она сидит, дом всегда наш сторожит.";
}
break;
case 4:
{
GameObject.Find ("Text1").GetComponent<Text> ().text = "Пыль увидит, заворчит, а потом проглотит.";
};5:
{.Find ("Text1").GetComponent<Text> ().text = "В Москве говорят, а у нас слышно.";
};
}
}
// Update is called once per frameUpdate () {
}void ZagadProv(){(MenuS.Z)
{1:
{= GameObject.Find ("Otvet").GetComponent<InputField> ().text;(vvod == "Свинья" || vvod == "свинья" || vvod == "Свинка" || vvod == "свинка" || vvod == "Поросёнок" || vvod == "поросёнок" || vvod == "Поросенок" || vvod == "поросенок" )
{= "Верно, молодец";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
{= "Неверно, попробуйещё.";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
};2:
{= GameObject.Find ("Otvet").GetComponent<InputField> ().text;(vvod == "Лиса" || vvod == "лиса" || vvod == "Лисица" || vvod == "лисица")
{= "Верно, молодец";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
{= "Неверно, попробуйещё.";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
};3:
{= GameObject.Find ("Otvet").GetComponent<InputField> ().text;(vvod == "Собака" || vvod == "собака" || vvod == "Собачка" || vvod == "собакча" || vvod == "Пёс" || vvod == "пёс" || vvod == "Пес" || vvod == "пес" )
{= "Верно, молодец";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
{= "Неверно, попробуйещё.";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
};4:
{= GameObject.Find ("Otvet").GetComponent<InputField> ().text;(vvod == "Пылесос" || vvod == "пылесос")
{= "Верно, молодец";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
{= "Неверно, попробуйещё.";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
};5:
{= GameObject.Find ("Otvet").GetComponent<InputField> ().text;(vvod == "Радио" || vvod == "радио")
{= "Верно, молодец";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
{= "Неверно, попробуйещё.";.Find ("Mes").GetComponent<Text> ().text = Mes;
}
};
}
}
}