Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке

Дипломная работа на тему «Создание компьютерной игры «Эволюция»

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

Написание диплома за 10 дней

Оглавление

Введение

.         Анализ предметной области

.1       Постановка задачи

.2       Алгоритмическое представление правил игры

.3       Спецификация требований

.4       Модель вариантов использования

.4.1    Построение диаграммы прецедентов

.4.2    Документирование прецедентов

.5       Обзор инструментов разработки

.6       Анализ аналогов

.7       Выводы по главе

.         Проектирование игры

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

.1       Модель проектирования

.1.1    Архитектура игры

.2       Разработка графического интерфейса пользователя.

.2.1    Структура интерфейса

.2.2    Главное меню

.2.3    Экран игры

.3       Реализация интерфейса в среде Unity

.3.1    Главное меню

.3.2    Экран игры

.4       Структура файла сохранения игры

.5       Проектирование поведения компьютера

.6       Выводы по главе

.         Разработка

.1       Перемещение карт

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

.2       Игровое поле игрока

.3       Реализация алгоритма поведения компьютера.

.4       Выводы по главе

Заключение

Библиографический список

ПРИЛОЖЕНИЕ A. Свойства базовой версии игры «Эволюция».

ПРИЛОЖЕНИЕ Б. Алгоритмическое описание правил игры.

ПРИЛОЖЕНИЕ В. Исходный код алгоритма поведения компьютера.

Введение

За последние 20 лет наблюдаются стремительные тенденции в развитии рынка видеоигр. Начиная свой путь от игровых автоматов, данная сфера постепенно охватила почти все цифровые устройства, которыми ежедневно пользуется каждый из нас: компьютеры, планшеты и мобильные телефоны. Помимо этого, существует также рынок настольных игр, который имеет значительное количество фанатов и интересных проектов. Исследования данной области показали, что около 62% людей, увлекающихся играми, предпочитают играть на компьютере, мобильном телефоне или планшете, около 14% любят играть в настольные игры в компании друзей, остальные 24%, предпочитают и то и другое [1]. Данная разница в показателях говорит о потере интереса к настольным играм, что в свою очередь обусловлено следующими факторами:

·        большинство людей не могут поиграть в настольную игру из-за отсутствия времени, места или необходимой компании, так как почти все настольные игры предназначены для игры от 2х до 4х человек;

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

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

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

В рамках выпускной квалификационной работы рассматривается настольная игра «Эволюция» — это симулятор развития жизни на Земле, основанный на дарвиновском принципе естественного отбора. Каждый игрок развивает собственную популяцию живых существ, наделяя их разнообразными свойствами — приспособлениями к условиям окружающей среды.

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

В настоящее время существует большое количество различных инструментов для разработки компьютерных или мобильных игр. У каждого из них есть свои особенности, свои плюсы и минусы. Наиболее предпочтительным для реализации игры «Эволюция» оказался движок Unity, по причине его бесплатного распространения, огромного сообщества и возможности создавать кроссплатформенные игры на высокоуровневом языке программирования C#.

Объектом данного исследования является настольная игра «Эволюция», предметом исследования — разработка компьютерной версии данной игры с использованием игрового движка Unity.

Целью работы является разработка компьютерной версии настольной игры «Эволюция» на игровом движке Unity.

Для достижения данной цели необходимо выполнить следующие задачи:

.         Изучить правила настольной игры «Эволюция» и на их основе определить функциональные требования и описать сценарий использования.

.         Спроектировать архитектуру разрабатываемой игры.

.         Разработать дизайн игровых объектов и графический интерфейс пользователя.

.         Реализовать компьютерную версию игры на основе спроектированных моделей используя среду Unity.

На этапе анализа используются такие методы исследования, как абстракция и декомпозиция для представления объекта в виде системы. Для описания взаимодействия всех элементов системы используются объектно-ориентированный анализ и проектирование.
1.         Анализ предметной области   .1 Постановка задачи

«Эволюция» — это настольная игра, для компании от 2х до 4х человек, где каждый игрок развивает собственную популяцию живых существ, наделяя их разнообразными свойствами необходимыми для выживания. Свойства помогают животным в борьбе за пищевые ресурсы, запасы которых ограничены. Существа, которым не досталось пищи, погибают, а выжившие позволяют ввести в игру ещё больше животных и свойств. Победителем становится тот из соперников, чья популяция будет к концу игры самой развитой и многочисленной [3].

Животные и их свойства представлены в игре в виде карточек. Где с одной стороны изображен символ животного — ящерица, а с другой различные свойства, такие как: «Хищник», «Водоплавающее», «Симбиоз», «Норное» и т.д. Всего в базовой версии игры существует 19 различных свойств (см. Приложение 1). Каждая карта, лежащая на поле игрока символом животного вверх, является одним из его существ. Свойства подкладываются под животное, таким образом, что бы другим игрокам было видно какими свойствами оно обладает. На некоторых картах указано сразу два свойства: в таком случае игрок должен выбрать, каким из них он хочет наделить своё существо. Когда животное погибает от голода или становится съеденным другим животным со свойством «Хищник», оно вместе со всеми свойствами отправляется в сброс игрока.

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

●        фаза развития;

●        фаза определения кормовой базы;

●        фаза питания;

●        фаза вымирания и получения новых карт.

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

Фаза развития. На данном этапе игроки по очереди выкладывают по одной карте на поле. Каждая карта может быть сыграна в виде животного или свойства, принадлежащего ему. Все свойства, кроме «Паразита» должны применяться только на своих животных, а «Паразит» — только на чужих. Некоторые свойства, такие как «Взаимодействие», «Симбиоз» и «Сотрудничество» являются парными — их необходимо применить сразу на двух своих существ. На каждое животное может быть сыграно неограниченное количество свойств. Однако на одно животное нельзя сыграть два одинаковых свойства. Исключением являются парные свойства и свойство «Жировой запас». В этой фазе игрок может досрочно завершить ход (спасовать), при этом остальные игроки могут продолжать ходить, до того момента пока у них не останется карт на руках. После того, как все игроки выложили своих животных и наделили их свойствами, либо спасовали, игра переходит к следующему этапу.

Фаза определения кормовой базы. На данном этапе, в зависимости от числа игроков, случайным образом определяется размер кормовой базы, т.е. количество фишек еды, которое будет доступно игрокам.

●       2 игрока — случайное число фишек от 3 до 8;

●       3 игрока — случайное число фишек от 2 до 12;

●       4 игрока — случайное число фишек от 4 до 14.

Фаза питания. Во время этого этапа игроки по очереди берут из кормовой базы одну фишку еды и используют на любое своё существо, которое ещё не накормлено. Для обычных животных необходима одна фишка еды красного цвета, чтобы оно считалось накормленными, но некоторые свойства увеличивают эту потребность. Также фишки еды можно получить, путем применения таких свойств, как «Хищник» или «Пиратство» в данном случае фишка дополнительной еды будет синего цвета. Накормленное животное не может получить новые фишки еды, кроме случая, когда на нем применяется свойство «Жирового запас», при действии данного свойства фишка еды красного цвета преобразуется в желтую фишку. Если все животные игрока накормлены и их «Жировой запас» заполнен, игрок больше не может брать фишки еды из кормовой базы или получать их в результате применения свойств. Однако если в кормовой базе остались фишки еды и у игрока еще есть ненакормленные животные или животные с незаполненным «Жировым запасом», он обязан брать фишки из кормовой базы. Когда все животные накормлены и их «Жировой запас» заполнен, либо закончилась кормовая база и игроки сыграли все свойства, которые хотели использовать в эту фазу хода — фаза питания завершается.

Фаза вымирания и получение новых карт. В начале данного этапа все животные игрока, оставшиеся ненакормленными, их свойства, а также относящиеся к ним парные свойства помещаются в снос. Снос каждого игрока кладется отдельно. Игрок может просматривать карты только в своем сносе. Затем каждый игрок получает количество карт, равное количеству его выживших животных + 1. Если у игрока не осталось ни одного животного на столе и ни одной карты на руках, он должен получить 6 карт. Карты раздаются по одной, начиная с первого игрока. Если при этом колода закончится, один или несколько игроков получат меньшее число карт. Когда карты розданы, раунд завершается. Все фишки еды, кроме «Жирового запаса», обнуляются. Право ходить первым передается по часовой стрелке следующему игроку.

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

●       +2 очка за каждое свое выжившее животное;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

●       +1 очко за каждое свойство выживших животных;

●       дополнительные очки за свойства, которые требуют дополнительной еды для прокорма животного: «Хищник» и «Большой» +1 очко; «Паразит» +2 очка.

Если несколько игроков набрали равное количество очков, побеждает тот, у кого больше карт в сносе.

Свойства. Полное описание свойств находится в приложении А. Свойства базовой версии игры «Эволюция».
1.2 Алгоритмическое представление правил игры

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

Рис. 1.1. Алгоритм игрового процесса.

Данная схема включает в себя следующие подпроцессы:

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

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

.         Фаза определения кормовой базы. Содержит алгоритм определения количества фишек еды, которое будет доступно игрокам в «фазу питания».

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

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

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

Подробные схемы подпроцессов находятся в приложении Б. Алгоритмическое описание правил игры.
1.3 Спецификация требований

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

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

Бизнес требования:

●       игра против компьютера;

●       выбор количества игроков.

Функциональные требования:

Требования, предъявляемые к системе, с точки зрения правил игры:

●          выдавать карты;

●          хранить актуальную информацию о текущих картах на руках игроков и их животных со всеми свойствами, лежащими на игровом поле;

●          рассчитывать очередность хода;

●          определять и передавать право на первый ход;

●          рассчитывать взаимодействие между различными свойствами;

●          определять кормовую базу в расчете на количество игроков;

●          помещать карты в сброс;

●          хранить информацию о картах находящихся в сбросе игрока;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

●          считать итоговые очки и определять победителя;

Требования, предъявляемые к системе, с точки зрения игрока:

●       начать новую игру;

●       положить карту в виде животного;

●       положить карту, как свойство;

●       пропустить ход;

●       взять фишку еды из кормовой базы;

●       положить фишку еды на своё животное;

●       активировать применить свойство;

●       закончить игру.   1.4     Модель вариантов использования   1.4.1  Построение диаграммы прецедентов

Визуализация требований реализована с помощью use-case диаграммы (см. рисунок 1.2.).

Рис. 1.2. Диаграмма прецедентов. 1.4.2  Документирование прецедентов

Документирование прецедентов представлено ниже в таблицах (см. таблицы 1.1. — 1.15).

Таблица 1.1. Прецедент «Создать новую игру».

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

 

Таблица 1.2. Прецедент «Задать параметры».

 

Таблица 1.3.Прецедент «Сохранить игру».

 

Таблица 1.4.Прецедент «Продолжить игру».

 

Таблица 1.5.Прецедент «Закончить игру».

 

Таблица 1.6.Прецедент «Играть».

 

Таблица 1.7. Прецедент «Получить карты».

 

Таблица 1.8.Прецедент «Выиграть».

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

 

Таблица 1.9.Прецедент «Проиграть».

 

Таблица 1.10.Прецедент «Пропустить ход».

 

Таблица 1.11.Прецедент «Сделать ход».

 

Таблица 1.12.Прецедент «Положить карту в виде животного».

 

Таблица 1.13.Прецедент «Положить карту как свойство».

 

Таблица 1.14.Прецедент «Взять фишку еды».

 

Таблица 1.15.Прецедент «Применить свойство».

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

1.5     Обзор инструментов разработки

В качестве среды для разработки компьютерной игры «Эволюция» был выбран игровой движок Unity. Unity — это мультиплатформенный инструмент для разработки  <#»897227.files/image003.gif»>

Panel

Область для группировки элементов. Может содержать фоновое изображение или цвет.

Image

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

Text

Компонент Text, также известный как Label, имеет область для ввода текста, который будет отображен. Есть возможность задать шрифт, его стиль и размер. Присутствуют опции для установки параметров выравнивания; настройки горизонтального и вертикального переполнения, которые управляют поведением текста, когда он не влезает по ширине или высоте в отведенный ему прямоугольник.

Button

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

Dropdawn

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

Scrollbar

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

Slider

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

Scrollview

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

Toggle

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

InputField

Предоставляет возможность пользователю вводить текст. Содержит 2 события: изменение текста и конец изменения текста.

 

 

Одной из главных особенностей игрового движка Unity является удобный и полностью настраиваемый интерфейс, который сочетает в себе редактор сцен, игровых объектов, скриптов, анимации, а также предоставляет возможность мгновенного запуска и отладки разрабатываемого приложения или игры [6]. На рисунке 1.3. изображен скриншот окна редактора. Все ресурсы и объекты могут перемещаться при помощи Drag-and-Drop методов.

Рис. 1.3. Окно редактора Unity.

Ниже подробней описаны используемые вкладки окна редактора:

1.       Scene View. В данном окне можно перемещаться по игровому миру, передвигать и вращать объекты сцены, а также изменять их масштаб.

2.       Game View. Представляет собой изображение игрового мира, отрисованное из установленной камеры. Здесь можно посмотреть, как будет выглядеть игра для игрока. Также можно запустить и проверить игру.

3.       Project Window. В данном окне можно работать со всеми ресурсами проекта: изображениями, шрифтами, скриптами, сохраненными объектами, сценами и т.д. Unity поддерживает огромное количество различных форматов мультимедии.

4.       Hierarchy Window. Представляет собой иерархию игровых объектов расположенных на текущей сцене.

5.       Inspector Window. Позволяет просмотреть, изменить и удалить свойстваскрипты текущего выбранного объекта. А также добавить объекту новые свойстваскрипты.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

6.       Toolbar. Содержит инструменты для трансформации игровых объектов в окне Scene View, Кнопки запуска и остановки приложения в окне Game View, выпадающее меню Layout которое отвечает за расположение окон в редакторе.

7.       Console Window. Обеспечивает вывод в лог сообщений, предупреждений и ошибок.

Unity также обладает следующими преимуществами:

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

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

3.       Кроссплатформенность. Один и тот же код, написанный на движке Unity, с минимальными изменениями может быть перенесен на различные платформы (PC, Mac, Android, iOS, Web, игровые консоли). Это огромный плюс, который сокращает время на разработку игры в несколько раз.

4.       Asset Store. Unity имеет собственный магазин, где можно найти огромное количество различных плагинов и ресурсов для создания игры. Разумеется, какие-то из них бесплатные, какие-то платные, но все они собраны в одном месте с удобным поиском и возможностью загрузить, интегрировать и получить сразу рабочий функционал [9].

В качестве инструмента для написания программного кода была выбрана среда Visual Studio 2015. В данной работе Visual Studio используется как лучшая альтернатива MonoDevelop, которая в игровом движке Unity представлена по умолчанию.

В качестве языка программирования был выбран высокоуровневый язык программирования C# [10]. 1.6     Анализ аналогов

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

Рис. 1.4. Интерфейс пользователя игры-аналога.

Данный аналог обладает следующими преимуществами:

●       доступен режим игры против 1го компьютера на 3х уровнях сложности. В данном варианте сложность проявляется в предоставлении «форы» компьютеру (компьютер отыгрывает один раунд без участия игрока, после этого присоединяется игрок);

●       доступен режим по сети 1 против 1;

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

●       понятный и интуитивный интерфейс пользователя, основанный на point-and-click;

●       существует запись в журнал игрового процесса, всех ходов игрока и его соперника;

●       возможность просмотреть код (массив содержащий параметры текущей игры: количество карт в колоде, очередность хода и список карт находящихся на руках у игроков);

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

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

Данный аналог обладает следующими недостатками:

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

Выделим основные критерии для сравнения аналога и разрабатываемой нами игры (см. таблица 1.17.):

.         Существует ли возможность запускать игру в оффлайн режиме против компьютера?

.         Присутствует ли возможность играть онлайн через интернет?

.         Правила игры соответствуют оригиналу игры?

.         Присутствует возможность выбора количества игроков?

.         Есть возможность изменить уровень сложности компьютера?

Таблица 1.17. Сравнение критериев игры аналога и разрабатываемой игры.

 

По сложившимся результатам можно сделать вывод, что разрабатываемая игра будет улучшена в том плане, что она позволит играть без подключения к интернету. И будет присутствовать возможность выбора количества игроков, от 2 до 4х. Таким образом, данный анализ помогает выявить достоинства и недостатки игры аналога и оценить конкурентное преимущество разрабатываемой игры.
1.7     Выводы по главе

В результате анализа правил настольной игры «эволюция» был представлен алгоритм в виде блок схем, подробно описывающий этапы игрового процесса. Были разработаны функциональные требования, предъявляемые к системе с точки зрения правил игры. Построена диаграмма вариантов использования и описан основной и альтернативный порядок действий системы при инициализации прецедента игроком. Проведен краткий обзор возможностей и преимуществ игрового движка Unity. Рассмотрены плюсы и минусы найденного аналога и определены преимущества разрабатываемой игры.
2.       Проектирование игры   .1 Модель проектирования

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

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

Таблица 2.1. Соответствие прецедентов и классов игры.

2.1.1  Архитектура игры

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

Рис. 2.1. Диаграмма классов. Часть 1.

Рис. 2.2. Диаграмма классов. Часть 2.

Рис. 2.3. Диаграмма классов. Часть 3.
2.2     Разработка графического интерфейса пользователя   .2.1    Структура интерфейса

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

Рис. 2.4. Структура интерфейса.
2.2.2  Главное меню

Главное меню (см. рис. 2.5.) игры состоит из названия игры, фонового изображения и 3х кнопок: «Новая игра», «Продолжить игру» и «Выход». При нажатии на кнопку «Новая игра» открывается модальное окно настройки параметров игры (см. рис. 2.6.), которое содержит переключатели для выбора набора карт (базовый набор установлен по умолчанию и не доступен для выбора), выбор количества игроков, а также кнопку «Начать игру», при нажатии на которую загрузится игровое поле.

Рис. 2.5. Главное меню

Рис. 2.6. Окно задания параметров игры.
2.2.3  Экран игры

Экран игры состоит из 2х областей: фронтальной области и игрового поля. Фронтальная область (см. рис. 2.7.) содержит верхнее меню с кнопками: «Показатьскрыть игровой лог», «Сохранить игру», «Выйти в меню». Также в верхней части фронтальной области располагается окно с игровым логом, текстом уведомлений и информацией о текущей фазе в которой находится игра. Внизу фронтальной области располагается панель с картами, находящимися “на руках” у игрока. Данная панель может быть свернута и развернута по щелчку мыши. При двойном нажатии на любую карту животного оно масштабируется по центру экрана (см. рис. 2.8.).

Рис. 2.7. Фронтальная область.

Рис. 2.8. Подробный просмотр карты.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Игровой стол (см. рис. 2.9.) находится в 3D пространстве и содержит 2 области: игрока и соперника. Данные области служат для расположения карт животных и их свойств. Между данными областями находится кормовая база с фишками еды. Также на игровом столе располагаются кнопки выбора игроков, колода с указанием оставшегося количества карт, и кнопка «Сброс», при нажатии на которую открывается модальное окно содержащее карты животных, которые погибли в результате фазы вымирания.

Рис. 2.9. Экран игры. Игровой стол.
2.3     Реализация интерфейса в среде Unity

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

На основе спроектированного графического интерфейса в Unity было создано 2 сцены:

·        «Menu» — представляет собой главное меню игры.

·        «Game» — представляет собой игровое пространство, на котором непосредственно происходит весь игровой процесс.

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

Рис. 2.10. Ресурсы проекта — игровые сцены.

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

Рис. 2.11. Настройки камеры в редакторе Unity.

Для создания игры было принято использовать систему UI игрового движка Unity. Все элементы UI располагаются на полотне (Canvas), которое определяет размещение 2D объектов в игровом пространстве. За это отвечает свойство Render Mode, которое содержит следующие значения:Space — Overlay. В данном режиме полотно масштабируется по размерам экрана и отрисовывается без связи со сценой или камерой (UI будет отрисован даже в том случае, когда на сцене нету камеры). В случае изменения размера окна, полотно будет растянуто под размеры экрана. Полотно будет рисоваться поверх всех остальных графических элементов.Space — Camera. В данном режиме полотно рисуется на плоскости перпендикулярной взгляду камеры, на некотором расстоянии от точки взгляда. Размер полотна не меняется с изменением расстояния, оно всегда масштабирется, чтобы заполнять разрез пирамиды видимости у камеры (camera frustrum view). Интерфейс будет заслоняться любыми 3D элементами, которые находятся перед плоскостью интерфейса.Space. В данном режиме полотно располагается в мировых координатах и является плоским 3D объектом.
2.3.1  Главное меню

На рисунке 2.12. показана сцена главного меню и иерархия объектов, расположенных на данной сцене. Полотно на котором располагаются UI элементы имеет свойство RenderMode с установленным значением Screen Space — Overlay. Такие элементы, как: ParamsWindow, ExitConfirm, ContinueGame — являются модальными окнами и по умолчанию находятся в неактивном состоянии.

Рис. 2.12. Сцена «Главное меню» и иерархия игровых объектов

— пустой GameObject содержащий класс для управления меню.

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

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

На рисунке 2.13. показана сцена «Игровое поле» и иерархия объектов данной сцены. Элементы фронтальной области располагаются на полотне со свойством Render Mode равном Screen Space — Overlay, это означает, что отображение данных элементов не зависит от камеры. Игровое поле представляет собой полотно, расположенное в 3D пространстве и повернутое под углом 30 градусов относительно камеры. Для отображения данной сцены используется перспективная камера.

Рис. 2.13. Сцена «Игровое поле» и иерархия объектов сцены.

Общее представление сцены игры, то, как она выглядит для игрока показано на рисунке 2.14.

Рис. 2.14. Отладка сцены «Игровое поле».
2.4     Структура файла сохранения игры

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

·        текущие настройки игры;

·        текущая фаза игры;

·        текущее право хода;

·        карты, находящиеся на руках у игроков;

·        карты животных, находящиеся на столе у игроков;

·        карты животных, находящиеся в сбросе у игроков;

·        свойства и связи между животными;

·        информация об использованных свойствах;

·        информация о накормленных животных;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

·        количество фишек еды в кормовой базе;

·        карты находящиеся в колоде.

Для описания данной информации наиболее подходящим является формат JSON. JSON (JavaScript Object Notation) — простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером [12]. Примерное содержание файла изображено на рисунке 2.15.

Рис. 2.15. Структура файла сохранения игры.
2.5     Проектирование поведения компьютера

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

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

В фазу развития бот может: с вероятностью 65% положить карту в виде свойства, с вероятностью в 30% положить карту в виде животного, или с вероятностью 5% пропустить ход. На рисунке 2.16 показан алгоритм действий бота в фазу развития. При выборе действия «Добавление свойства» система рассчитывает все возможные варианты, исходя из типа свойства, всех животных находящихся на столе и уже имеющихся у этих животных свойств, далее при помощи датчика случайных чисел выбирается один из этих вариантов. Если выбрано действие «Добавление свойства», но по какой-то причине оно не может быть добавлено — выбирается действие «Добавить животное».

В фазу питания бот может: с вероятностью 60% взять фишку еды из кормовой базы, с вероятностью 35% применить свойство, например использовать хищника, чтобы атаковать другое животное на игровом поле или с вероятностью 5% пропустить ход. На рисунке 2.17. показан алгоритм действий бота в фазу питания. Здесь также существует несколько вариантов: например, есть свойства, которые могут быть использованы совместно с взятием фишки еды из кормовой базы или с применением другого свойства, в данном случае алгоритм будет повторно проверять возможность использования свойств с тем условием, что ход уже сделан. Вероятность применить свойство, таким образом, равна 50%. Также учитывается правило: «Нельзя пропустить ход, если имеются фишки в кормовой базе или не накормленные животные на столе» в данном случае, действие «Пропустить ход» заменяется на действие «Взять фишку еды».

Рис. 2.16. Действие бота в фазу развития.

Рис. 2.17. Действие бота в фазу питания.
2.6     Выводы по главе

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

3.       Разработка   .1       Перемещение карт

Для того чтобы выкладывать карты на стол в виде животных и их свойств был выбран механизм Drag-and-Drop. Данный способ реализуется путём «захвата» (нажатием и удержанием левой кнопки мыши) отображаемого на экране объекта, программно доступного для подобной операции, и перемещении его в другое место (для изменения расположения) либо «бросания» его на другой элемент (для вызова соответствующего, предусмотренного программой, действия).

Для того чтобы игровой объект — карта получила возможность перемещаться по нажатию и удерживанию левой кнопки мыши. Был написан класс DraggableCard, который реализует интерфейсы: IBeginDragHandler, IDragHandler, IEndDragHandler (см. рис. 3.1.).

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

Рис. 3.1. Интерфейсы класса DraggableCard.

Данные интерфейсы содержат обработку следующих событий:

·        OnBeginDrag — срабатывает при начале перемещения объекта (При нажатии и удерживании левой клавиши мыши).

·        OnDrag — срабатывает в момент перемещения объекта.

·        OnEndDrag — срабатывает в конце перемещения объекта (При отпускании левой клавиши мыши).

Данные события присутствуют в Unity по умолчанию. И принимают на вход объект класса PointerEventData хранящий информацию о положении курсора мыши на экране, области наведения и перемещаемом объекте [8].

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

Рис. 3.2. Обработчик события OnBeginDrag.

Ключевым моментом в реализации является то, что карта может перемещаться в 2х плоскостях: фронтальной области экрана (по координатам курсора) и по области игрового поля, которое расположено в 3D пространстве, расположение карты в обоих случаях показано на рисунках 3.3. и 3.4. Данный механизм реализован при помощи отслеживания положения курсора. Если карта выходит за пределы области блока родителя она перемещается в 3D пространство параллельно игровому полю и дальнейшие перемещение карты происходит в данной области. Координаты карты в данном случае рассчитываются путем преобразования координат курсора в луч и нахождения точки пересечения этого луча с игровым полем. Подробная реализация обработчика события OnDrag с комментариями показана на рисунке 3.5.

Рис. 3.3. Перемещение карты в рамках родительского блока.

Рис. 3.4. Перемещение карты в рамках родительского блока.

Рис. 3.5. Обработчик события OnBeginDrag.

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

Рис. 3.6. Обработчик события OnEndDrag. a.

3.2 Игровое поле игрока

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

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

Рис. 3.7. Область для размещения карты животного.

Для того чтобы отследить события перемещения карты на игровое поле был написан класс BoardDropZone, включающий в себя реализацию следующих интерфейсов: IPointerEnterHandler, IPointerExitHandler, IDropHandler (см. рис. 3.8.).

Рис. 3.8. Интерфейсы класса BoardDropZone.

Данные интерфейсы содержат обработку следующих событий:

·        OnPointerEnter — срабатывает при наведении курсора на игровое поле. Служит для перехвата перемещения карты на игровое поля и отображения выделенной области, необходимой для размещения карты в виде животного.

·        OnPointerExit — срабатывает при выводе курсора за игровое поле. Служит для перехвата перемещения карты за игровое поля и скрытия выделенной области.

·        OnDrop — срабатывает при отпускании карты над игровым полем, но не над выделенной областью — выделенная область пропадает.

Данные события присутствуют в Unity по умолчанию. И принимают на вход объект класса PointerEventData хранящий информацию о положении курсора мыши на экране, области наведения и перемещаемом объекте. При инициализации событий OnPointerEnter, OnPointerExit и OnDrop проверяется условие, что объект инициализирующий данные события является картой и имеет имя Card2Prop — карта с двумя свойствами или Card1Prop — карта с одним свойством. Подробная реализация данных обработчиков представлена на рисунке 3.9.

Рис. 3.9. Реализация обработчиков событий OnPointerEnter, OnPointerExit и OnDrop.

Метод ShowNewAnimalPlaceholder добавляет одну (если нет животных на столе) или две (если есть животные на столе то с левого и правого края игрового поля) выделенные области на игровое поле и приписывает их на событие OnDrop, в случаи отпускания карты над одной из этих областей произойдет добавление нового животного. Класс добавления нового животного представлен на рисунке 3.10.

Рис. 3.10. Реализация метода AddAnimalToBoard класса BoardDropZone.

Также данный класс содержит метод GetAnimalById который позволяет получить игровой животное, находящиеся на столе, в виде игрового объекта по указанному ID. Функционал данного метода представлен на рисунке 3.11.

Рис. 3.11. Реализация метода GetAnimalById класса BoardDropZone.
3.3     Реализация алгоритма поведения компьютера

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

Рис. 3.12. Реализация метода MakeTurn класса PlayerBot.

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

Данный метод содержит в себе вызовы следующих методов:

·        AddAnimal() — добавление нового животного на игровое поле.

·        AddTrait() — добавление свойства животному на игровом поле.

·        PassTurn() — пропуск хода.

·        TakeFoodChip() — взять фишку еды из кормовой базы и накормить животное.

·        UseTrait() — использовать доступные свойства животного.

Подробное описание данных методов представлено в приложении В. Исходный код алгоритма поведения компьютера.
3.4     Выводы по главе

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

Заключение

В результате выполнения работы цель — разработка компьютерной версии игры «Эволюция» была достигнута. Проведен анализ правил настольной игры «Эволюция» и на его основе построена диаграмма классов, описывающая игровую логику, спроектирован и разработан графический интерфейс пользователя. Используя, Visual Studio и игровой движок Unity, был написан программный код и реализована компьютерная версия игры.

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

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

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

1.       Аналитический центр Юрия Левады [Электронный ресурс] Режим доступа #»897227.files/image045.gif»>

Рис. Б.1. Подпроцесс «Инциализация».

Рис. Б.2. Подпроцесс «Фаза развития».

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

Рис. Б.3. Подпроцесс «Определение кормовой базы».

Рис. Б.4. Подпроцесс «Фаза питания». Часть 1.

Рис. Б.5. Подпроцесс «Фаза питания». Часть 2.

Рис. Б.6. Подпроцесс «Фаза вымирания».

Рис. Б.7. Подпроцесс «Положить карту».

Рис. Б.8. Подпроцесс «Взять фишку еды».

Рис. Б.9. Подпроцесс «Применить свойство».

Рис. Б.10. Подпроцесс «Завершение игры».
Приложение В. Исходный код алгоритма поведения компьютера

using UnityEngine;UnityEngine.UI;System.Collections.Generic;class PlayerBot : MonoBehaviour {delegate void AnimalAddedEvent();delegate void TraitAddedEvent();delegate void PassTurnEvent();delegate void AnimalFeedEvent();static event AnimalAddedEvent OnAnimalAdded;static event TraitAddedEvent OnTraitAdded;static event PassTurnEvent OnPassTurn;static event AnimalFeedEvent OnAnimalFeed;boardHolder;player;foodBase;GameObject animalPrefab;GameObject traitPrefab;GameObject linkPrefab;ColorsStack colors;

// Use this for initializationStart()

{= this.transform.GetComponent();= GameObject.Find(«Player»+player.ID+»Board/Viewport/EnemyBoardHolder»).transform;= GameObject.Find(«FoodBank»).GetComponent();= new ColorsStack();

}GameObject GetAnimalById(int ID)

{(Transform animalObj in boardHolder)

{AnimalID = System.Convert.ToInt32(animalObj.FindChild(«AnimalID»).GetComponent().text);(AnimalID == ID)

{animalObj.gameObject;

}

}null;

}void AddAnimal()

{card = player.hand.GetRandomCard();anim = new Animal();.board.AddAnimal(anim);animal = (GameObject)Instantiate(animalPrefab,boardHolder.position,boardHolder.rotation);.transform.SetParent(boardHolder);.transform.FindChild(«AnimalID»).GetComponent().text = anim.ID.ToString();.AddGameLog(«Добавил животное», player.playerName);(OnAnimalAdded != null) OnAnimalAdded();

}List GetPossibleOptionsToFeedAnimal()

{ options = new List(); animals = player.board.GetAllAnimals();(animals != null) // It will never be null

{(Animal animal in animals)

{(!animal.IsFed())

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Заказать диплом

{.Add(animal);

}

}

}options;

}List GetPossibleOptionsToAddPairTrait(Trait linkedTrait, Animal linkedAnimal)

{ options = new List(); animals = player.board.GetAllAnimals();(animals != null) // It will never be null

{(Animal animal in animals)

{(animal.ID != linkedAnimal.ID)

{CanBeLinked = true; traits = animal.GetTraitList();(traits != null)

{(Trait tt in traits)

{(tt.Id == linkedTrait.Id)

{(tt.pairAnimal.ID == linkedAnimal.ID)

{= false;

}

}

}

}(CanBeLinked)

{.Add(animal);

}

}

}

}options;

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

}List<object[]> GetPossibleOptionsToAddTrait()

{[] parameters = new object[3];<object[]> options = new List<object[]>(); animals = player.board.GetAllAnimals(); cards = player.hand.GetAllCards();trait = null;canBeAdded;(Animal animal in animals)

{(Card card in cards)

{(card.PropertyB != null)

{= new Trait(card.PropertyB,false);= animal.CanGetTrait(trait);(canBeAdded)

{[0] = animal;[1] = card;[2] = trait;.Add(parameters);

}= new Trait(card.PropertyA, false);= animal.CanGetTrait(trait);(canBeAdded)

{[0] = animal;[1] = card;[2] = trait;.Add(parameters);

}

}

{= new Trait(card.PropertyA, false);= animal.CanGetTrait(trait);(canBeAdded)

{[0] = animal;[1] = card;[2] = trait;.Add(parameters);

}

}

}

}options;

}void AddTrait()

{<object[]> options = GetPossibleOptionsToAddTrait();(options.Count > 0)

{rndOption = Random.Range(0,options.Count);animal = (Animal)options[rndOption][0];card = (Card)options[rndOption][1];trait = (Trait)options[rndOption][2];(trait.IsPair())

{ linkedAnimalOptions = GetPossibleOptionsToAddPairTrait(trait, animal);(linkedAnimalOptions.Count > 0)

{newtrait = new Trait(trait); // Create to get IDrndLinkedAnimalOption = Random.Range(0, linkedAnimalOptions.Count);linkedAnimal = linkedAnimalOptions[rndLinkedAnimalOption];linkedTrait = new Trait(trait);animalOnBoard = null;linkedAnimalOnBoard = null;(Transform animalObj in boardHolder)

{AnimalID = System.Convert.ToInt32(animalObj.FindChild(«AnimalID»).GetComponent().text);(AnimalID == animal.ID)

{= animalObj.gameObject;

}(AnimalID == linkedAnimal.ID)

{= animalObj.gameObject;

}

}pairTrait = animalOnBoard.GetComponent().AddTraitToAnimal(newtrait);color = colors.GetColor();.GetComponent().AddTraitToAnimal(linkedTrait, pairTrait, color);.pairAnimal = animal;.pairAnimal = linkedAnimal;(newtrait.Id == «Symbiosis»)

{.isSymbiont = false;.isSymbiont = true;

}.hand.RemoveCard(card);.board.RemoveAnimal(animal);.board.RemoveAnimal(linkedAnimal);.AddTrait(newtrait);.AddTrait(linkedTrait);.board.AddAnimal(animal);.board.AddAnimal(linkedAnimal);(OnTraitAdded != null) OnTraitAdded();

}

{();

}

}

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

{newtrait = new Trait(trait); // Create to get ID.hand.RemoveCard(card);.board.RemoveAnimal(animal);.AddTrait(newtrait);(trait.IsFatReserve()).countFatReserveCell++;(trait.Food > 0)

{.countFoodCell += trait.Food;.neededFood += trait.Food;

}.board.AddAnimal(animal);animalOnBoard = null;(Transform animalObj in boardHolder)

{AnimalID = System.Convert.ToInt32(animalObj.FindChild(«AnimalID»).GetComponent().text);(AnimalID == animal.ID)

{= animalObj.gameObject;;

}

}.GetComponent().AddTraitToAnimal(newtrait);(OnTraitAdded != null) OnTraitAdded();

}

}

{();

}

}void UseTrait()

{();

}void TakeFoodChip()

{(foodBase.foodBankHoler.childCount > 0)

{ options = GetPossibleOptionsToFeedAnimal();(options.Count > 0)

{rndAnimalOption = Random.Range(0, options.Count);animal = options[rndAnimalOption];chip = new FoodChip(FoodColor.RED);.Feed(chip, 1);.GetFoodChip();animalOnBoard = null;(Transform animalObj in boardHolder)

{AnimalID = System.Convert.ToInt32(animalObj.FindChild(«AnimalID»).GetComponent().text);(AnimalID == animal.ID)

{= animalObj.gameObject;;

}

}.GetComponent().CheckPairTrait(player, animal, null, null);.GetComponent().FeedAnimal();(OnAnimalFeed != null) OnAnimalFeed();

}

{

// Все животные накормлены();

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

}

}

{

// Нет фишек в кормовой базе

}

}void PassTurn()

{(OnPassTurn != null) OnPassTurn();

}void MakeTurn(PhaseType phaseType)

{(phaseType)

{PhaseType.DEVELOPMENT:(player.hand.GetCount != 0) // Если нет карт на руках

{(player.board.GetCount == 0) // Если нет животных на столе

{();

}

{

/* Вероятность: 5% — пропустить ход, 30% — добавить животное, 65% — добавить свойство */

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Цена диплома

int rndAction = Random.Range(1, 101);(rndAction <= 65)

{();

}if(rndAction > 95)

{();

}

{();

}

}

}

{();

};PhaseType.FEEDING:(player.board.GetCount == 0) // Если нет животных на столе

{();

}

{

Нужна помощь в написании диплома?

Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Сдача работы по главам. Уникальность более 70%. Правки вносим бесплатно.

Подробнее

/* Вероятность: 5% — пропустить ход, 35% — использовать свойство, 60% — взять фишку еды */

int rndAction = Random.Range(1, 101);(rndAction <= 65)

{();

}if (rndAction > 95)

{(foodBase.Size > 0 && !player.board.AllAnimalIsFed())();();

}

{();

}

};

}

}

}

Средняя оценка 0 / 5. Количество оценок: 0

Поставьте оценку первым.

Сожалеем, что вы поставили низкую оценку!

Позвольте нам стать лучше!

Расскажите, как нам стать лучше?

1523

Закажите такую же работу

Не отобразилась форма расчета стоимости? Переходи по ссылке

Не отобразилась форма расчета стоимости? Переходи по ссылке