Создание интерактивной книги средствами Unity3d
Исследование основных принципов создания интерактивных книг. Выбор сказки и средств реализации. Подготовка графического материала. Написание сценария, создание прототипа. Разработка интерактивной книги по мотивам сказки Х.К. Андерсена "Гадкий утенок".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 30.11.2014 |
Размер файла | 4,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ГУМАНИТАРНЫЙ ФАКУЛЬТЕТ
Кафедра информационных технологий
Курсовой проект
СОЗДАНИЕ ИНТЕРАКТИВНОЙ КНИГИ СРЕДСТВАМИ UNITY3D
Акимова Татьяна Константиновна
Научный руководитель: доцент С. В. Царик
Минск, 2014
ОГЛАВЛЕНИЕ
- ВВЕДЕНИЕ
- 1. ОСНОВНЫЕ ПРИНЦИПЫ СОЗДАНИЯ ИНТЕРАКТИВНЫХ КНИГ
- 1.1 Выбор сказки
- 1.2 Подготовка графического материала
- 1.3 Выбор средств реализации
- 2. АНАЛИЗ АНАЛОГИЧНЫХ ЭЛЕКТРОННЫХ ИЗДАНИЙ
- 2.1 Интерактивная книга «Кто украл Луну?»
- 2.2 Интерактивная книга «Приключения Кеши»
- 2.3 Интерактивная книга «Рассказ на ночь: анимационный сборник рассказов»
- 3. СЦЕНАРИЙ И ПРОТОТИПИРОВАНИЕ
- 3.1 Написание сценария использования
- 3.2 Создание прототипа
- 4. РАЗРАБОТКА ИНТЕРАКТИВНОЙ КНИГИ
- 4.1 Дизайн
- 4.2 Создание анимации
- 4.3 Разработка мини игр
- ЗАКЛЮЧЕНИЕ
- СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
- ПРИЛОЖЕНИЯ
ВВВЕДЕНИЕ
В связи со стремительным развитием современного общества в сферу жизнедеятельности человека непрерывно увеличился темп развития и происходит проникновение информационных технологий, что обеспечивает эффективное функционирование и успешную эволюцию общественного мира. Внедрение информационных технологий производится во всех сферах, в том числе и в развитии ребенка.
Не секрет, что игры и игрушки для детей являются важным инструментом познания мира, они помогают развивать ощущения и даже учиться. И в этом смысле их интерес к мобильным устройствам, играющим в нашей жизни все большую роль, вполне понятен. Сегодня на рынке появляется все больше мобильных приложений, рассчитанных на детскую аудиторию: начиная от обычных сказок, мультфильмов или игр, заканчивая весьма своеобразным интерактивным контентом, комбинирующим свойства книги, мультфильма и развивающей игры.
В детстве у всех нас были книжки с картинками, ведь читать и запоминать гораздо легче и интереснее, когда видишь иллюстрации, дополняющие текст. Можно вспомнить даже книжки, на страницах которых открывались целые объемные панорамы, и листать которые было особенно интересно. Мобильные приложения позволяют пойти еще дальше, ведь с их помощью иллюстрации буквально оживают. Юный читатель погружается в тщательно проработанную вселенную, наполненную яркими красками и звуками, а динамика происходящего приковывает внимание. [1]
В связи с этим целью данной курсовой работы является создание интерактивной книги по мотивам сказки Х.К. Андерсена “Гадкий утенок”.
Для достижения указанной цели необходимо решить следующие задачи:
? Продумать сценарий интерактивной книги.
? Создать прототип.
? Выбрать инструмент разработчика.
? Непосредственно разработать интерактивную книгу.
? Провести тесты.
? Оценить полученные результаты.
1. ОСНОВНЫЕ ПРИНЦИПЫ СОЗДАНИЯ ИНТЕРАКТИВНЫХ КНИГ
1.1 Выбор сказки
Для выбора сказки нужно было определить свою целевую аудиторию. До трех лет дети еще не распознают грань между реальностью и иллюзиями и поэтому именно в этом возрасте у них формируются разнообразные страхи, на что непосредственно влияют сказки. Поэтому моя целевая аудитория - это дети от 3 - 6 лет. В этом возрасте ребенок начинает воспринимать мир совсем не так как взрослые. Он может представлять себя в роли какого-либо персонажа, начинает рассуждать и готов к начальному обучению.
Выбор сказки - один из самых сложных этапов создания интерактивной книги. Хотелось, чтобы сказка чему-то научила и оставила свой след в сознании ребенка, ведь сказка - это один из способов общения ребенка с миром. Полагаясь на свои личные воспоминания и переживания из детства, выбор пал на несколько сказок, одна из которых - Х.К.Андерсен “Гадкий утенок”. Сокровенный смысл этой философической сказки Андерсена, близкой к притче, в извечном столкновении двух сил: добра и зла. Преображение когда-то некрасивого птенца в прекрасного лебедя - лишь внешняя сторона сюжета. Суть - в изначально благородной натуре маленького Гадкого утенка от природы щедро открытого любви и добру. Гонимый всеми, он не только не озлобился, когда обитатели птичьего двора озлобились на него за непохожесть на них самих; он готов был усомниться в себе самом, обвинить в своих несчастьях себя. Правда, когда Гадкий утенок после бесконечного унижения и травли решился смиренно принять смерть - раз уж с его безобразием и жить нельзя, - он выбирает для «казни» не уток-гусей-индюшек, а величественных и благородных красавцев лебедей. И оказалось, что они - его собственное отражение. Быть может, в этом возрасте ребенок не сразу поймет смысл, но сказка обязательно оставит след, пускай даже самый не значительный, который обязательно повлияет на его действия в будущем. Для того чтобы точно определиться с выбором сказки был проведен небольшой опрос у детей: двух девочек в возрасте 3-х и 5-и лет и мальчика в 4 -х летнем возрасте. Как проходил тест. Детям были представлены сказки от одного издательства, т. к. во многом в раннем возрасте влияют красочные картинки. Книга выбиралась по следующим наблюдениям: сколько времени ребенок проведет с книгами, какую выберет, какую попросит прочитать.
Результат был получен в пользу Х.К.Андерсена “Гадкого утенка” в соотношении 2/1.
1.2 Подготовка графического материала
Для ребенка в раннем возрасте очень важны иллюстрации. Чтобы появилось желание ознакомиться с книгой и вызвать значительный интерес, для ребенка, который не умеет читать, необходимы красочные, оригинальные и незабываемые картинки. Иллюстрации были сделаны в Adobe Photoshop и Adobe Illustrator [2, 3].Основные герои были нарисованы в Adobe Illustrator, где потом в Adobe Photoshop собирались отдельные сцены.
Для чего это было нужно?. Как известно, в Adobe Illustrator векторная графика (вектор описывает фигуру математической формулой), когда как в Adobe Photoshop растровая графика (растр представляет собой двухмерную, прямоугольную, основанную на пикселах сетку, один раз про масштабировав ее можно увидеть пикселы). Поэтому все персонажи и детали были нарисованы в Adobe Illustrator, чтобы исключить привязку к исходному размеру изображения. Были использованы в основном базовые цвета, ведь цвет для ребенка в дошкольном возрасте очень важен. По исследованию ведущих психологов 2-3 года у детей хорошо сформирован зрительный анализатор, т.е. дети легко различают все основные цвета. В 3-4 года дифференцирование цвета, как при его восприятии, так и в словесном обозначении вначале образуется по отношению к четырем цветам: красный, желтый, синий и зеленый, а затем ко всем остальным. Внешним вид книги формировался таким образом, чтобы передать ощущения из детства, которые ассоциируются с продукцией студии «Союзмультфильм». Шрифт был выбран, чтобы полностью создать картинку добрых советских мультиков.
1.3 Выбор средств реализации
Для создания интерактивной книги был использован игровой движок Unity3d [4]. Unity3d - это центральный программный компонент игр или других интерактивных приложениях с графикой, которую можно обрабатывать в реальном времени. Он обеспечивает основные технологии, упрощает разработку и дает возможность игре или приложению запускаться на разных платформах. Unity имеет:
? Движок рендеринга (визуализации).
? Кроссплатформенностью.
? Физический движок.
? Звук. Систему скриптов.
? Сетевой код.
? Управление памятью и много поточность.
? Анимацию.
? Возможность создавать интернет-приложения.
? Сценарии на С#, JS, Boo.
? Drag&Drop.
? Импорт.
? Возможность совместной разработки.
? Встроенная поддержка сети.
В Unity3d имеем готовый рендер, готовую физику, аудио и сетевую библиотеки, писать код можно на трех языках. Движок полностью связан со средой разработки, что позволяет прямо в редакторе испытывать проект.
2. АНАЛИЗ АНАЛОГИЧНЫХ ЭЛЕКТРОННЫХ ИЗДАНИЙ
интерактивный книга прототип графический
2.1 Интерактивная книга «Кто украл Луну?»
Это история о маленьком мальчике Берти Брауне, который увлечен космосом и небесными телами, в особенности Луной. Однажды Луна пропадает с неба, и мальчик начинает ее поиски. Прекрасные иллюстрации анимированы: от прикосновения к экрану с книжных страниц сыплются ночные звезды, летают игрушки в комнате и гаснет свет в окнах городских домов. Также в книге есть 8 песен с караоке, доступные только на английском, и 4 игры по мотивам сказки. Кроме того, в книге есть обучающий компонент: проводя расследование, ребенок знакомится с ночными животными. После нескольких страниц читателю предлагается купить «золотой билет», чтобы получить полную версию книги [5].
рисунок 2.1- Интерактивное приложения «Кто украл Луну?»
2.2 Интерактивная книга «Приключения Кеши»
Книга повествует о приключениях маленького воробья Кеши. Приложение состоит из двух книг: «Первый полет» - о появлении Кеши и о его первых уроках полета - и «Рожден летать» - о сложностях полета и специальных навыках. Формат приложения имитирует небольшую детскую книжку. Помимо красочных иллюстраций с интерактивными объектами, которые можно подбрасывать и передвигать, книга озвучена профессиональными детскими актерами, озвучивающими аудиокниги и аудио спектакли. Так же есть игра, которая предусматривает возможность изучения слов в игровой форме [6].
рисунок 2.2 - Интерактивная книга «Приключения Кеши»
2.3 Интерактивная книга «Рассказ на ночь: анимационный сборник рассказов»
Компания AESOP, занимающаяся разработкой приложений для беременных и кормящих мам, создала новое приложение, предназначенное для маленьких детей. Данное приложение относится к разряду «сказок на ночь»: герои истории -- маленькие животные. Каждого из них ребенок должен уложить спать прикосновением к экрану, после чего включается анимация. Текст можно читать вслух самостоятельно, а можно включить звуковое сопровождение. Приложение подходит и для iPad, и для iPhone, поддерживает несколько языков и оптимизировано для дисплея Retina. Скачать сказку можно бесплатно, внутри нет никаких опций за дополнительные деньги. Иллюстрации и музыка красивы, но анимация достаточно простая: нажатие в любой области экрана включает стандартное движение героя с одной страницы книги на другую [7].
Просмотрев аналогичные интерактивные книги, можно выделить несколько основных принципов разработки. Книга должна быть красочной и иметь интересные иллюстрации, фоновое сопровождение, как музыки, так и аудио сказки, звуки, интерфейс должен быть понятен на интуитивном уровне, меньше текста, больше рисунков, так как это интерактивная книга, то наличие интерактивные элементов не обходимо.
3. СЦЕНАРИЙ И ПРОТОТИПИРОВАНИЕ
3.1 Написание сценария использования
Сценарий - это первоначальный прототип, описанный словесно или хорошо написанный план книги. В нем имеет значения каждая сцена, каждый интерактивный элемент, переход между сценами, когда начинается аудио запись, когда заканчивается. Сценарий помогает представить не только, как должна выглядеть каждая сцена, но и спасает от не ясной кучи запутанных идей. Чтобы создать сценарий нужно решить ряд поставленных задач, таких как:
? Четкая последовательность сцен.
? Интерактивные элементы. Сколько их будет, как они будут реагировать, на каких сценах находиться.
? Музыкальное сопровождение. Решить какая озвучка сказки будет на каждой сцене. Подобрать звуки интерактивных элементов.
? Игры. Какой логикой будут обладать игры в книге, и где они будут находиться.
Был создан сценарий интерактивной книги. Книга состоит из 8 сцен, каждая сцена имеет 5 и более интерактивных элементов. Кроме сцен сказки имеется два меню (главное меню и подменю). Главное меню содержит небольшую анимацию. Имеется страница загрузки и финальная страница сказки. Переход по сценам происходит по завершению аудио, прикрепленного к этой сцене, или при нажатии на кнопку перехода по сценам. Книга содержит так же 3 игры с логикой «Поймай», «Найди», «Пятнашки».
3.2 Создание прототипа
После описания сценария можно перейти непосредственно к созданию интерактивной книги. Но, что бы не тратить время и избежать ошибок, нужно создать прототип. Прототип может быть выполнен как в бумажной форме, как и в программной. Главное помнить, что чем меньше мы уделяем внимания иллюстрациям, тем больше времени мы экономим. Благодаря прототипу мы сможем визуально понять, как интерактивные элементы будут располагаться, как будут реагировать, как будут проходить переходы между страницами, и какая схема должна быть у кнопок, чтобы перемещаться по сценам. Для создания прототипа книги «Гадкий утенок» был использован бумажный вариант, основываясь на модели для создания ПО Барри Бима [8].
Модель Барри Бима: 1. Определиться с основой дизайна.
2. Высчитать самые большие риски вашего дизайна.
3. Создать прототипы, которые уменьшат эти риски.
4. Протестировать прототипы.
5. Определиться с более детальным дизайном, основываясь на информации, которую вы получили.
6. Вернуться к пункту 2.
Риск№1 Возможно, интерактивные элементы не понравятся.
Риск№2 Возможно, сказка будет слишком долгой.
Риск №3 Возможно, игры не вызовут интерес.
Каждый лист - это сцена сказки или меню с предполагаемым интерфейсом. Перед созданием книги очень важно представлять всю информацию о каждом элементе книги, а благодаря сценарию и прототипу можно это сделать и при этот затрачивая меньше сил и времени, можно решить множество проблем еще до начала создания книги, что поможет достичь наилучшего результата Чем больше мы тестируем прототип, чем больше вариантов, что проект будет иметь успех.
4. РАЗРАБОТКА ИНТЕРАКТИВНОЙ КНИГИ
4.1 Дизайн
Дизайн книги. Интерфейс выполнен в базовых мягких цветах, стараясь привлечь ребенка и одновременно оставить впечатление доброй и положительной сказки.
В начале книги появляется меню. Сделано оно в голубых тонах неба с разноцветным названием сказки, где анимированные лебеди предлагаю выбрать один из вариантов: сказка, игры или выход. Все это сопровождается вступительной музыкой из сказки.
В сказке есть сцены, когда главному герою очень плохо и холодно. Чтобы передать визуально это настроение были использованы темные оттенки синего. На каждой сцене верхнем левом углу есть кнопка паузы, которая предлагает выйти в главное меню или остаться.
4.2 Создание анимации
Анимация в интерактивной книге была создана с помощью игрового движка двух-мерной и трех-мерной графики Unity3d. Были использованы такие элементы как: анимация, аниматор и скриптинг. Анимация -- это таймлайн с ключевыми кадрами. Здесь можно двигать, поворачивать, масштабировать объекты, можно рисовать кривые. Спрайты поддерживают покадровую анимацию. Аниматор -- это большая и сложная система, которая непосредственно управляет анимацией. Скриптинг -- необходимая составляющая всех игр. Даже самые простые игры нуждаются в скриптах для реакции на действия игрока и организации событий геймплея. Кроме того, скрипты могут быть использованы для создания графических эффектов, управления физическим поведением объектов или реализации пользовательской ИИ системы для персонажей игры.
Создадим проект. В окне Project в папке Assets, создадим подпапку Sprites, где будем хранить спрайты -- графические файлы, необходимые для отображения персонажей, фона, пола, бонусов и прочих игровых объектов. Настроить камеру [9]. Камера поддерживает два режима (вида проекции): перспективный (Perspective) и ортогональный (Orthographic). Первый используется во всех 3d-играх: объекты, расположенные дальше от камеры, выглядят меньше. Это почти то, как мы видим наш мир. Нам нужен второй режим, Orthographic - объекты всегда рисуются реального размера и перекрывают друг друга в зависимости от расстояния до камеры. Идеальный режим камеры для 2d и изометрии [10]. На объекте Сamera лежит компонент Сamera в нем нужно указать Projection - Orthagraphic. После создания фона, можно перейти к основному объекту. Для этого из папки Assets мы перетягиваем используемый объект в редактор сцены. В инспекторе объекта, создаем Box Collider 2D, из раздела Physics 2D для того, чтобы можно было заусть анимацию по клику на объект [11]. Во вкладке «Animation» создаем анимацию и располагаем кадры так, как должна выглядеть анимация объекта.Во вкладке «Animator»нужно настроить управление этой анимации, с помощью связей. После чего переходим к написанию скрипта для анимации объекта.
Для анимации объектов используется C# скрипт:
using UnityEngine;
using System.Collections;
public class actionscript : MonoBehaviour {
private Animator anim;
private int count=0;
void Start(){
anim = GetComponent<Animator>();}
void OnMouseDown(){
if (Time.timeScale != 0) {
if (count % 2 != 0) {
anim.SetBool ("action", true);
}
if (count % 2 == 0) {
anim.SetBool ("action", false);
}
count++;
}
}
При нажатие на элемент, на котором уже висит коллайдер срабатывает функция OnMouseDown(), которая переключает состояние анимации.
4.3 Разработка мини игр
Родителям детей иногда хочется поторопить время и сделать своих малышей старше их возраста. Едва ли не с самого рождения взрослые учат детей чтению, счету, отдают предпочтение энциклопедическим знаниям, но забывают о играх, хотя это один из основных инструментов для познания информации окружающего нас мира. Вообще, все, что ребенок делает в течение дошкольного детства, становится основой не только формирования двигательных навыков, но и интеллектуального, социального и эмоционального развития. Поэтому были сделаны игры: «Поймай», «Найти», «Пятнашки», для развития тонкой моторики, внимания и логики.
Игра «Поймай»
У детей до школьного возраста сложно провести границу между физическим, в частности двигательным, развитием, с одной стороны, и интеллектуальным - с другой. В дошкольные годы дети совершенствуют двигательные навыки, в том числе моторику: грубую (способность совершать движения большой амплитуды: бег, прыжки, бросание предметов) и тонкую (способность совершать точные движения малой амплитуды). По мере развития тонкой моторики дети становятся все более самостоятельными, что заметно при выполнении ими повседневных действий. Развитие моторики позволяет ребенку непринужденно передвигаться, самому заботиться о себе и проявлять свои творческие способности.
Смысл игры «Поймай» заключается в том, что нужно насобирать как можно больше баллов за определенное время. Имеются разных размеров и цветов звезды. Каждая звезда имеет свой балл, который можно получить, собрав их. А собирает звезды Гадкий утенок, который бегает по экрану горизонтально.
Для данной игры используется скрипт С#:
void OnMouseDrag()
{if(Time.timeScale!=0){
curScreenPoint = new Vector3(Input.mousePosition.x,0,0);
curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
if (curPosition.x < xMax) {
if (curPosition.x > xMin) {
transform.position = curPosition;
}
}
Функция OnMouseDrag() отвечает за горизонтальное передвижения утенка по сцене, при зажатом коллайдоре.
Игра «Найти»
Внимание - это такой процесс сознания, который действует избирательно и направлен на какой-либо объект. Если у ребенка высокий уровень развития внимания, то в дальнейшем это поможет ему при обучении в школе, он будет легче сосредотачиваться, и не будет отвлекаться. Пока ребенок маленький, внимание его непроизвольно, он не может управлять им, часто отвлекается от основного занятия, сосредоточиться ему сложно. В связи с этим любая деятельность ребенка дошкольного возраста непостоянна, охваченный впечатлениями он, не закончив одно дело, хватается за другое. Именно поэтому Игра№2 «Найти» разрабатывалась с целью развить у ребенка высокий уровень внимания.
Игра «Найти». Цель игры - найти как можно больше лягушек за определенное количество времени. Сцена разворачивается на болоте. Смысл заключается в том, что начинают появляться лягушки в разных метах сцены и за разными предметами, которых нужно найти. Когда находишь лягушку, она квакает.
Фрагмент из скрипта С#:
umerator Spawn ()
{float waitTime = Random.Range (minTimeBetweenSpawns, maxTimeBetweenSpawns);
if (Time.timeSinceLevelLoad > 30) {
waitTime = Random.Range (minTimeBetweenSpawns/2, maxTimeBetweenSpawns/2);
}
yield return new WaitForSeconds(waitTime);
float posX =Random.Range(leftSpawnPosX, rightSpawnPosX);
float posY = Random.Range(upSpawnPosY, downSpawnPosY);
Vector3 spawnPos = new Vector3(posX , posY,transform.position.z );
Rigidbody2D propInstance = Instantiate(backgroundProp, spawnPos, Quaternion.identity) as Rigidbody2D;
StartCoroutine(Spawn());
}
С помощью этого кода лягушки в игре появляются в случайном порядке и в количестве не больше 30 штук.
Игра «Пятнашки»
Дети очень быстро растут и развиваться. Поэтому разница между детьми 3-х лет и 5-и очень велика. К возрасту 5-7 лет дети должны уметь решать простые задачи и головоломки. К сожалению, играми часто пренебрегают, ошибочно считая, что они лишь развлекают детей и тратят их время. Но важно отметить, что игры бывают разными и если их правильно подобрать, то в игровой форме, можно подготовить ребенка к предстоящим трудностям в школе. Поэтому одна из игр - головоломка. Первые две игры в интерактивной книге довольно простые и возможно 5-и летний ребенок не заострит на них свое внимание, но обязательно остановится на третьей игре «Пятнашки».
Пятнашки - головоломка, представляющая собой 8 квадратных частей одной картинки. Все картинки заключены в квадратную рамку размером 3x3. Таким образом при размещении частей картинки в рамке остается одно пустое место размером с одну часть картинки, которое можно использовать для перемещения костяшек внутри коробки. Цель игры - собрать все изображение.
Небольшой кусок скрипта на написанный на языке программирования С#:
private void Shuffle()
{
//shuffle
for (int i = 0; i < Constants.MaxColumns; i++)
{
for (int j = 0; j < Constants.MaxRows; j++)
{
if (Matrix[i, j] == null) continue;
int random_i = Random.Range(0, Constants.MaxColumns);
int random_j = Random.Range(0, Constants.MaxRows);
//swap'em
Swap(i, j, random_i, random_j);
}
Метод private void Shuffle() в случайном порядке меняет местами части головоломки.
ЗАКЛЮЧЕНИЕ
В результате выполнения данной курсовой работы были получены следующие основные результаты:
? Создан сценарий
? Создан прототип
? Выбран инструмент разработки
? Разработана интерактивная книга
? Произведено тестирование продукта
? Оценены результаты
Книга была представлена нескольким пользователям различной возрастной категории:
? 2 ребенка (2-5 лет)
? Молодежь (10 человек 18-27 лет)
? Взрослые (4 человека 40-70 лет)
Как оказалось, полученная реакция совпадает в пределах одной категории возраста и рознится с реакцией пользователей из других категорий. Так, дети приходили в восторг при первом просмотре книги и внимательно следили за всем происходящем, однако, при повторном использовании продукта через некоторое время интерес спадал. Это говорит о том, для детей важно постоянное обновление всей информации, получаемой извне. Молодежь относилось с интересом, восторг наблюдался у единиц. Повторное использование производилось без заметной заинтересованности. Взрослому контингенту игра одинаково нравилась как при презентации продукта, так и при повторных использованиях.
Таким образом, можно сделать вывод, что наибольший успех книга имела у своей целевой аудитории (детей), однако, при создании продуктов такого типа важно учитывать его «одноразовость» что может быть решено с дополнительными модулями (мини-игры, обновляемый контент и т.д.)
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. Сайт научно-практических конференций [Электронный ресурс]. - Режим доступа: http://sibac.info/index.php. - Дата доступа: 20.11.2014.
2. Официальный сайт Adobe Россия [Электронный ресурс]. - Режим доступа: http://www.adobe.com/ru/products/photoshop.html. - Дата доступа: 25.10.2014.
3. Официальный сайт Adobe [Электронный ресурс]. - Режим доступа: https://www.adobe.com/products/illustrator.html - Дата доступа: 17.10.2014.
4. Unity Documentation [Электронный ресурс]. - Режим доступа: http://docs.unity3d.com/ScriptReference/AudioSource.h.. - Дата доступа: 11.10.2014.
5. Издательство Windy Press [Электронный ресурс]. - Режим доступа: http://www.windypress.com/ru/whostolethemoon/. - Дата доступа: 13.10.2014.
6. iTunes [Электронный ресурс]. - Режим доступа: https://itunes.apple.com/us/app/priklucenia-kesi-2/ - Дата доступа: 16.10.2014.
7. Forbes [Электронный ресурс]. - Режим доступа: http://m.forbes.ru/article.php?id=220509. - Дата доступа: 14.10.2014.
8. Джесси Шелл «Искусство геймдизайна» - 435 с.
9. Unity Documentation [Электронный ресурс]. - Режим доступа: http://docs.unity3d.com/ScriptReference/Object.Instan.. - Дата доступа: 24.10.2014.
10. Unity Documentation [Электронный ресурс]. - Режим доступа: http://docs.unity3d.com/ScriptReference/Collider.html - Дата доступа: 16.10.2014.
11. Unity - Manual: Prefabs [Электронный ресурс]. - Режим доступа: http://docs.unity3d.ru/Manual/Prefabs.html - Дата доступа: 18.10.2014.
ПРИЛОЖЕНИЯ
Приложение 1
Сценарий интерактивной книги
«Гадкий утенок» по мотивам книги Ганса Христиана Андерсена
Экран меню
При запуске приложения интерактивной сказки на экране появляется меню, в котором под вступительную музыку из разных сторон летят прекрасные лебеди. Лебеди за собой тянут ленточки на которых написано: «Сказка», «Игры», «Выход». Когда лебеди остановятся на середине экрана, можно будет выбрать одно из пунктов меню.
Экран загрузки
На экране загрузки отображены песочные часы.
Страница №1
Интерактивные элементы: трава, мама-утка, утята, яйцо, облака.
Представляет из себя картинку на которой нарисована высокая трава, которая при нажатие опускается, мама-утка и ее частично не вылупившееся утята. При наведении на утку она шевелит крылышком, на утят - они начинают пищать. При наведении на яйцо утенок вылупляется. По завершению текста или при нажатие на стрелочку происходит переход кадра.
Текст:
«В один прекрасный летний день утка, которая свила гнездо около ограды на хозяйском дворе, почувствовала, что яйца под ней начинают шевелиться. Из них тоненькими голосами закрякали утята и один за другим показались головки.
- Все ли вылупились? - спросила она и осмотрела их.- Нет, одно яйцо целое еще.
- Наверно индюшачье. Смотри какое большое - высказала насупившись одна старая утка, которая пришла ее увидеть.
Через некоторое время и большое яйцо зашевелилось и из него вылупился странный серый утенок.
- Он не как не похож на других - сказала мама утка, и повела утят к реке плавать, увидела, что серый утенок плавает не хуже остальных, и она сказала:
- И он мой утенок, ничего, что не красив!»
Страница №2
Интерактивные элементы: забор, листья на дереве, облака, утенок и утка.
На следующей сцене можно увидеть Птичий двор с большим забором, на который можно нажать, чтобы увидеть, что там происходит. Отображена испанская утка, рассматривающая утенка. При нажатие на утку она подносит к лицу очки. Утенок опускает голову и дрожит. Облака плывут. Листья с деревьев падают. По завершению текста или при нажатие на стрелочку происходит переход кадра
Текст:
«Думаю, что настало время представить вас птичьему двору.
На другой день погода была чудесной и мама-утка повела свой выводок на птичий двор. Когда они пришли все стали осматривать утят.
- Целая новая орда пакостников!- прокрякала одна заядлая утка.- А этот какой гадкий! Не хочу видеть его здесь!»
Страница №3
Интерактивные элементы: петух, утенок, дерево, облака, забор.
На следующем кадре продолжаются действия на птичьем дворе. Забор можно опустить нажав на него. Петух угрожает Гадкому Утенку, нажав на него он начинает возмущенно кукарекать и надвигаться на утенка. Нажав на утенка, он начинает шевелиться. Дерево, нажав на него, меня цвет. Облака плывут. По завершению текста или при нажатие на стрелочку происходит переход кадра.
Текст:
«День ото дня становилось все хуже и хуже: Все обитатели птичьего двора обижали бедного малыша. Петух, который чувствовал себя чуть ли не императором, подлетел к гадкому утенку, поглядел на него и сердито залопотал. Утенок просто не знал, что ему делать и куда деваться. Он страшно испугался»
Страница №4
Интерактивные элементы: луна, две звезды, облака, утенок.
На странице №4 изображен утенок, который, при нажатие на него, убегает из птичьего двора. Луна становиться еще светлей, звезды падают, облака плывут. По завершению текста или при нажатие на стрелочку происходит переход кадра.
Текст:
«Однажды утенок не выдержал и убежал. Гадкий утенок, перебежал через птичий двор, прополз под оградой и убежал. Он шел и шел не останавливаясь пока не достиг большого болота, в котором жили дикие утки. Усталый и голодный, он остался там ночевать.»
Страница №5
Интерактивные элементы: собака, утенок, ружье, облака, трава.
В кадре утенок на болоте и охотничья собака. Действие утенка - обижено разводит крыльями. Собака поднимает поочередно уши и рычит. Ружье стреляет. Облака плывут. Трава опускается. По завершению текста или при нажатие на стрелочку происходит переход кадра.
Текст:
«Проснувшись утром утенок услышал пальбу - это были охотники. Одна из охотничьих собак с высунутым языком внезапно появилась перед птенцом, оскалилась на него и… убежала.
- Не тронула, - подумал утенок. - Это потому, что я такой урод.»
Страница №6 Интерактивные элементы: утенок, три лебедя, облака.
Действие при нажатие на утенка - увидев прекрасных лебедей он махает крыльями. Действия лебедей - начинают улетать за экран. Облака плывут По завершению текста или при нажатие на стрелочку происходит переход кадра
Текст:
«Утенок нашел чудесное озеро, где можно было плавать и нырять вдоволь. А однажды он увидел стаю прекрасных больших птиц. Таких птиц он еще не встречал: все белые, как снег, с длинными шеями… Это были лебеди. Утенок полюбил их так, как не любил до этого еще никого на свете.»
Страница №7
Интерактивные элементы: утенок, снег, дождь, три листочка.
На кадре отображен одинокий утенок, который переживает осенние холода.
Утенок расстроено опускает голову, дождь и снег идет, листья падают. По завершению текста или при нажатие на стрелочку происходит переход кадра
Текст:
«Между тем пришла осень, стало холодно. Листья на деревьях пожелтели, побурели, а потом начали опадать. Даже ворон приуныл и перестал каркать. Бедному утенку приходилось совсем плохо»
Страница №8
Интерактивные элементы: три прекрасных лебедя, Гадкий утенок, облака.
Утенок рассматривает себя отражением на озере, лебеди приветственно махают крыльями. Облака плывут. По завершению текста или при нажатие на стрелочку происходит переход кадра
Текст:
«Утенок пережил холодные времена. Наступила весна, утенок по-прежнему плавал в озере. И вдруг из чащи тростника выплыли три чудных белых лебедя. Они плыли так легко и плавно, точно скользили по воде. Утенок узнал этих прекрасных птиц, и его охватила какая-то непонятная грусть.
«Полечу к ним, к этим величавым птицам. Они, наверно, заклюют меня насмерть за то, что я, такой гадкий, осмелился приблизиться к ним. Но все равно! Лучше погибнуть от их ударов, чем сносить щипки уток и кур, пинки птичницы да терпеть холод и голод зимою!»
Он склонился над водой и вдруг увидел в ней свое отражение. Но он был уже не гадким серым утенком, а красивым белоснежным лебедем!»
Страница №9
Появляется конечная сцена со словом «Конец».
Игры. Подменю.
После того как в главном меню выбрать пункт «игры», появляется подменю с голубым фоном и надписью «Давай поиграем» , в котором расположены игры по номерам на белых облаках.
Игры№1. «Поймай»
Смысл игры «Поймай» заключается в том, что нужно насобирать как можно больше баллов за определенное время. Имеются разных размеров и цветов звезды. Каждая звезда имеет свой балл, который можно получить, собрав их. А собирает звезды Гадкий утенок, который бегает по экрану горизонтально
Игры№2. «Найди»
Сцена разворачивается на болоте. Смысл заключается в том, что начинают появляться лягушки в разных метах сцены и за разными предметами, которых нужно найти. Когда нажимаешь на лягушку, она квакает. Игры№3. «Пятнашки»
Пятнашки - головоломка, представляющая собой 8 квадратных частей одной картинки. Все картинки заключены в квадратную рамку размером 3x3. Таким образом при размещении частей картинки в рамке остается одно пустое место размером с одну часть картинки, которое можно использовать для перемещения костяшек внутри коробки. Цель игры - собрать все изображение .
Приложение 2
Раскадровка интерактивной книги. Меню
рисунок 1 - “Меню”
рисунок 2 - “Сцена№1”
рисунок 3 - “Сцена№2”
рисунок 4 - “Сцена№3”
рисунок 5 - “Сцена№4”
рисунок 6 - “Сцена№5”
рисунок 7 - “Сцена№6”
рисунок 8 - “Сцена№7”
Приложение 3
Фрагменты программного кода интерактивной книги
actionsscript.cs
using UnityEngine;
using System.Collections;
public class actionscript : MonoBehaviour {
private Animator anim;
private int count=0;
void Start(){
anim = GetComponent<Animator>();}
void OnMouseDown(){
if (Time.timeScale != 0) {
if (count % 2 != 0) {
anim.SetBool ("action", true);
}
if (count % 2 == 0) {
anim.SetBool ("action", false);
}
count++;
}
}
}
goLebed.sc
using UnityEngine;
using System.Collections;
public class lebgo : MonoBehaviour {
private Animator anim;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
}
void Update () {
if (GameObject.Find ("lebed1sc6").GetComponent<lebedisc6> ().go == true) {
anim.SetBool ("action", true);
}
if (GameObject.Find ("lebed1sc6").GetComponent<lebedisc6> ().go == false) {
anim.SetBool ("action", false);
}
}
}
Tree.cs.
using UnityEngine;
using System.Collections;
public class changetree : MonoBehaviour {
private int count=0;
void Start(){
GameObject.Find ("derevo1").GetComponent<SpriteRenderer>().enabled = true;
GameObject.Find ("derevo2").GetComponent<SpriteRenderer>().enabled = false;
}
// Use this for initialization
void OnMouseDown(){
if (Time.timeScale != 0) {
if (count % 2 != 0) {
GameObject.Find ("derevo1").GetComponent<SpriteRenderer> ().enabled = false;
GameObject.Find ("derevo2").GetComponent<SpriteRenderer> ().enabled = true;
}
if (count % 2 == 0) {
GameObject.Find ("derevo1").GetComponent<SpriteRenderer> ().enabled = true;
GameObject.Find ("derevo2").GetComponent<SpriteRenderer> ().enabled = false;
}
count++;
}
}
// Update is called once per frame
void Update () {
}
}
BackgroundPropSpawner.cs
using UnityEngine;
using System.Collections;
public class BackgroundPropSpawner : MonoBehaviour
public Rigidbody2D backgroundProp;// The prop to be instantiated.
public float upSpawnPosY;// The Y coordinate of position if it's instantiated on the left.
public float downSpawnPosY;// The Y coordinate of position if it's instantiated on the right.
public float leftSpawnPosX;// The lowest possible X coordinate of position.
public float rightSpawnPosX;// The highest possible X coordinate of position.
public float minTimeBetweenSpawns;// The shortest possible time between spawns.
public float maxTimeBetweenSpawns;// The longest possible time between spawns.
public float minSpeed;// The lowest possible speed of the prop.
public float maxSpeed;// The highest possible speeed of the prop.
void Start ()
{
StartCoroutine("Spawn");
}
IEnumerator Spawn ()
{
float waitTime = Random.Range(minTimeBetweenSpawns, maxTimeBetweenSpawns);
yield return new WaitForSeconds(waitTime);
float posX =Random.Range(leftSpawnPosX, rightSpawnPosX);
float posY = upSpawnPosY;
Vector3 spawnPos = new Vector3(posX , posY,transform.position.z );
Rigidbody2D propInstance = Instantiate(backgroundProp, spawnPos, Quaternion.identity) as Rigidbody2D;
Vector3 scale = propInstance.transform.localScale;
scale.y *= -1;
propInstance.transform.localScale = scale;
float speed = Random.Range(minSpeed, maxSpeed);
speed *= -1f;
propInstance.velocity = new Vector2(0,speed);
StartCoroutine(Spawn());
while(propInstance != null)
{
if(propInstance.transform.position.y < downSpawnPosY - 0.5f)
Destroy(propInstance.gameObject);
yield return null;
}
}
}
EndScoreAchG2.cs
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class EndScoreAchG2 : MonoBehaviour {
public int language ;
Text text;
// Use this for initialization
void Start () {
PlayerPrefs.HasKey ("Language");
language = PlayerPrefs.GetInt ("Language");
text = GetComponent<Text> ();
}
// Update is called once per frame
void Update () {
text = GetComponent<Text> ();
if (0<startScoreG2.score && 11>startScoreG2.score) {
if (language == 0) {
text.text = "Try Again";
}
if (language == 1) {
text.text = "Попробуй еще";
}
}
if (startScoreG2.score > 10 &&21>startScoreG2.score) {
if (language == 0) {
text.text = "Good";
}
if (language == 1) {
text.text = "Хорошо";
}
}
if (startScoreG2.score > 25) {
if (language == 0) {
text.text = "Excellent";
}
if (language == 1) {
text.text = "Умничка";
}}
}
}
Game3.cs
using UnityEngine;
using System.Collections;
using Assets.Scripts;
using UnityEngine.UI;
public class Game : MonoBehaviour
{
public float fromleft;
public float ratio;
public int index;
Text text;
// Use this for initialization
void Start()
{
if (Screen.width == 1024 && Screen.height == 768&& Screen.height > 650) {
ratio = 0.272f;
fromleft = 0.09f;
}
else if (Screen.width == 800 && Screen.height == 480) {
ratio = 0.218f;
fromleft = 0.176f;
}
else if (Screen.width == 960 && Screen.height == 540) {
ratio = 0.206f;
fromleft = 0.192f;
}
else if (Screen.width == 1280 && Screen.height< 801 && Screen.height> 720) {
ratio = 0.210f;
fromleft = 0.186f;
}
else if (Screen.width == 854 && Screen.height == 480) {
ratio = 0.205f;
fromleft = 0.192f;
}
else {
ratio = 0.205f;
fromleft = 0.19f;
}
gameState = GameState.Start;
//random blank piece
index = Random.Range (0, Constants.MaxSize);
go [index].SetActive (false);
//get the objects from the 1D array,
//convert them to Piece class and
//place them in a 2D array
for (int i = 0; i < Constants.MaxColumns; i++) {
for (int j = 0; j < Constants.MaxRows; j++) {
if (go [i * Constants.MaxColumns + j].activeInHierarchy) {
Vector3 point = GetScreenCoordinatesFromVieport (i, j);
go [i * Constants.MaxColumns + j].transform.position = point;
//place relevant information
Matrix [i, j] = new Piece ();
Matrix [i, j].GameObject = go [i * Constants.MaxColumns + j];
Matrix [i, j].OriginalI = i;
Matrix [i, j].OriginalJ = j;
//add a box collider the the raycast to work properly
if (Matrix [i, j].GameObject.GetComponent<BoxCollider2D> () == null)
Matrix [i, j].GameObject.AddComponent<BoxCollider2D> ();
} else {
Matrix [i, j] = null; //this will be our "empty" object
}
}
}
}
private void Shuffle()
{
//shuffle
for (int i = 0; i < Constants.MaxColumns; i++)
{
for (int j = 0; j < Constants.MaxRows; j++)
{
if (Matrix[i, j] == null) continue;
int random_i = Random.Range(0, Constants.MaxColumns);
int random_j = Random.Range(0, Constants.MaxRows);
//swap'em
Swap(i, j, random_i, random_j);
}
}
}
private void Swap(int i, int j, int random_i, int random_j)
{
//temp piece, necessary for swapping
Piece temp = Matrix [i, j];
Matrix [i, j] = Matrix [random_i, random_j];
Matrix [random_i, random_j] = temp;
//set the correct positions to both objects
if (Matrix [i, j] != null)
Matrix [i, j].GameObject.transform.position = GetScreenCoordinatesFromVieport (i, j);
Matrix [random_i, random_j].GameObject.transform.position
= GetScreenCoordinatesFromVieport (random_i, random_j);
//set the required properties
if (Matrix [i, j] != null) {
Matrix [i, j].CurrentI = i;
Matrix [i, j].CurrentJ = j;
}
Matrix [random_i, random_j].CurrentI = random_i;
Matrix [random_i, random_j].CurrentJ = random_j;
}
// Update is called once per frame
void Update()
{
switch (gameState)
{
case GameState.Start:
if (Input.GetMouseButtonUp(0) )
{
Shuffle();
gameState = GameState.Playing;
}
break;
case GameState.Playing:
CheckPieceInput();
break;
case GameState.Animating:
AnimateMovement(PieceToAnimate, Time.deltaTime);
CheckIfAnimationEnded();
break;
case GameState.End:
text = GetComponent<Text> ();
GameObject.Find("puzzleend").GetComponent<Text> ().enabled=true;
if (Input.GetMouseButtonUp(0))
{ //reload
Application.LoadLevel(Application.loadedLevel);
}
break;
default:
break;
}
}
void CheckPieceInput()
{
if (Input.GetMouseButtonUp (0) ) {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast (ray.origin, ray.direction);
//check if a piece was hit
if (hit.collider != null) {
string name = hit.collider.gameObject.name;
string[] parts = name.Split ('-');
int iPart = int.Parse (parts [1]);
int jPart = int.Parse (parts [2]);
int iFound = -1, jFound = -1;
//find which one was hit, in our 2D array
//there must be a better way than this one
for (int i = 0; i < Constants.MaxColumns; i++) {
if (iFound != -1)
break;
for (int j = 0; j < Constants.MaxRows; j++) {
if (iFound != -1)
break;
if (Matrix [i, j] == null)
continue;
if (Matrix [i, j].OriginalI == iPart
&& Matrix [i, j].OriginalJ == jPart) {
iFound = i;
jFound = j;
}
}
}
Piece foundPiece = Matrix [iFound, jFound];
//check for the null piece, taking into account the game bounds
bool pieceFound = false;
if (iFound > 0 && Matrix [iFound - 1, jFound] == null) {
pieceFound = true;
toAnimateI = iFound - 1;
toAnimateJ = jFound;
} else if (jFound > 0 && Matrix [iFound, jFound - 1] == null) {
pieceFound = true;
toAnimateI = iFound;
toAnimateJ = jFound - 1;
} else if (iFound < Constants.MaxColumns - 1 && Matrix [iFound + 1, jFound] == null) {
pieceFound = true;
toAnimateI = iFound + 1;
toAnimateJ = jFound;
} else if (jFound < Constants.MaxRows - 1 && Matrix [iFound, jFound + 1] == null) {
pieceFound = true;
toAnimateI = iFound;
toAnimateJ = jFound + 1;
}
if (pieceFound) {
//get the coordinates of the empty object
screenPositionToAnimate = GetScreenCoordinatesFromVieport (toAnimateI, toAnimateJ);
PieceToAnimate = Matrix [iFound, jFound];
gameState = GameState.Animating;
}
}
}
}
private void AnimateMovement(Piece toMove, float time)
{
//animate it
//Lerp could also be used, but I prefer the MoveTowards approach :)
toMove.GameObject.transform.position = Vector2.MoveTowards(toMove.GameObject.transform.position,
screenPositionToAnimate , time * AnimSpeed);
}
/// <summary>
/// A simple check to see if the animation has finished
/// </summary>
private void CheckIfAnimationEnded()
{
if(Vector2.Distance(PieceToAnimate.GameObject.transform.position,
screenPositionToAnimate) < 0.1f)
{
//make sure they swap, exchange positions and stuff
Swap(PieceToAnimate.CurrentI, PieceToAnimate.CurrentJ, toAnimateI, toAnimateJ);
gameState = GameState.Playing;
//check if the use has won
CheckForVictory();
}
}
private void CheckForVictory()
{
for (int i = 0; i < Constants.MaxColumns; i++)
{
for (int j = 0; j < Constants.MaxRows; j++)
{
if (Matrix[i, j] == null) continue;
if ((Matrix[i, j].CurrentJ != Matrix[i, j].OriginalJ)||(Matrix[i, j].CurrentI != Matrix[i, j].OriginalI)) return;
//at least one wrong piece, so we haven't won (yet!)
}
}
print (index);
//go [index].SetActive (true);
gameState = GameState.End;
}
private Vector3 GetScreenCoordinatesFromVieport(int i, int j)
{
Vector3 point = Camera.main.ViewportToWorldPoint (new Vector3 (ratio*j+fromleft, 1f-0.205f * i - 0.2f, 0));
point.z = 0;
return point;
}
Vector3 screenPositionToAnimate;
private Piece PieceToAnimate;
private int toAnimateI, toAnimateJ;
public Piece[,] Matrix = new Piece[Constants.MaxColumns, Constants.MaxRows];
private GameState gameState;
public GameObject[] go;
public float AnimSpeed = 10f;
}
Размещено на Allbest.ru
Подобные документы
Логотипы компаний: книжный супермаркет "Читай-город", магазина "Дом книги" и "100000 книг". Выбор программы и цветовой гаммы. Создание сценария рекламного ролика и логотипа "Book". Выбор стиля интерьера. Особенности стиля хай-тек. Создание сложных фигур.
контрольная работа [5,5 M], добавлен 18.01.2014Создание электронной интерактивной карты общественного транспорта г. Ижевска, позволяющей выполнять над ней различные манипуляции. Разработка основы для привязки всех остановок и маршрутов. Реализация программного и пользовательского интерфейса карты.
контрольная работа [1,3 M], добавлен 13.12.2014Реализация системы визуального программирования. Выбор технических средств для нее. Варианты использования языка JavaScript. Создание приложения программы-редактора блок-схем и сайта удалённого обучения на основе интерактивной системы обучения Moodle.
дипломная работа [2,2 M], добавлен 07.07.2012В мире детства особая роль отведена художнику, создающему иллюстрации для книг. Влияние цветов и картинок на восприятие детей различного возраста. Разработка макета детской книжки-игрушки "Колобок". Создание иллюстраций с помощью программы Corel Draw 12.
курсовая работа [1,1 M], добавлен 12.11.2010Основные понятия и определения мультимедийных технологий. Возможности программы для создания интерактивной векторной анимации, ориентированной на создание web-сайтов и презентаций Macromedia Flash. Этапы создания мультимедийных презентационных программ.
дипломная работа [73,2 K], добавлен 15.04.2013Разработка структуры сайта: создание карты, макета страницы, обеспечение навигации, определение дополнительных сервисов, выбор технологии. Создание базы данных, написание скриптов и сценариев для реализации имеющихся на сайте функциональных возможностей.
дипломная работа [3,2 M], добавлен 19.02.2013Компьютер как средство обучения. Классификация учебно-программных средств. Роль интерактивных технологий в обучении школьников. Эффективное управление познавательной деятельностью учащихся первой ступени обучения с помощью интерактивной доски Smart.
курсовая работа [856,7 K], добавлен 10.02.2012Разработка сайта интерактивной карты городского пассажирского транспорта. Описание системы управления контентом Joomla! Выбор технических параметров хостинга. Разработка структуры сайта, его основные разделы. Выгрузка сайта на хостинг в интернете.
дипломная работа [6,3 M], добавлен 13.12.2014Создание системы управления базой данных "Библиотека" версии InterBase 6.5, выполненной в среде Delphi7. Создание таблиц СУБД: Читатель, Штраф, Выдача книги, Автор, Размещение книги, Экземпляр, Издательство, Произведения, Литературная форма, Жанр, Книга.
дипломная работа [907,3 K], добавлен 20.09.2013Выбор средств разработки. Написание сценариев PHP. Разработка базы данных MySQL. Описания организации иерархической многопользовательской модульной структуры сайта с возможностью управления содержанием. Создание средств для удаленного администрирования.
практическая работа [4,8 M], добавлен 12.06.2013