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

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

К. Г. Карстен, «Диаграммы и графики» (1923)

Первые негативные выпады в сторону круговых (секторных) диаграмм начались более 100 лет назад. В 1914 году инженер и сторонник визуализации, Виллард Бринтон (Willard Brinton), опубликовал работу под названием «Графические методы», которую принято считать первой книгой о правильной визуализации данных для широкой аудитории. Он был Эдвардом Тафтом своего времени: пропагандистом наглядного обмена информацией и памфлетистом плохих форм.

Значительная часть книги Бринтона предостерегает читателей от использования круговых диаграмм (pie chart). В самой первой главе, описывая «составные элементы», автор объясняет:

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

С тех пор, как Бринтон написал эти слова, многие статистики и эксперты в области визуализации выступили против секторных диаграмм и настаивали на использовании различных альтернатив. Хотя изначально в своих суждениях критики апеллировали к логике, за последние 40 лет они отыскали экспериментальные доказательства, которые указывают на неполноценность таких диаграмм в плане точности передачи информации.

Тем не менее, круговые диаграммы остаются весьма востребованными. Крупные издательства и медиа-корпорации, например, The Walt Street Journal и Target Corporation, до сих пор используют их, чтобы отображать свои данные. Кроме того, некоторые веб-ресурсы также задействуют этот довольно спорный графический метод.

Чтобы понять суть проблемы, вернемся к ее истокам и рассмотрим аргументы сторонников и критиков секторных диаграмм.

История возникновения

Отцом современной визуализации данных можно по праву назвать Уильяма Плейфэра (William Playfair). Он родился в Шотландии в 1759 году и вел очень увлекательный образ жизни. Плейфэр принимал участие во взятии Бастилии, внес свой вклад в развитие телеграфа и, конечно же, опубликовал первую круговую диаграмму. Он также является создателем столбиковой и линейной диаграмм.

Круговая диаграмма является одной из многих инноваций шотландского «мошенника» Уильяма Плейфэра

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

В 1801 году он опубликовал «Статистический Бревиарий» (Statistical Breviary) — книгу, посвященную демографическим и экономическим данным европейских государств. В этой работе, которая содержала первую круговую диаграмму, Плейфэр аргументирует ценность использования графических элементов: «Создание визуального образа для наших глаз при сохранении всех пропорций и размеров — это наиболее оптимальный и читабельный способ выражения определенной идеи».

Секторная диаграмма, опубликованная на страницах «Статистического Бревиария», показана ниже. На ней изображены доли земельных участков Турецкой Империи, расположенных в Азии, Африке и Европе тех времен. Этот рисунок принято считать первой круговой диаграммой, где идея о целом была представлена в виде круга, а для различия секторов использовался цвет.

Распределение площади Турецкой Империи является первой известной секторной диаграммой

Но как Плейфэр пришел к такой идее?

Некоторые эксперты считают, что секторная диаграмма обязана своим появлением кругам, которые использовались для представления понятий в философии и математике. Брат Плейфэра, Джон, был уважаемым математиком и ученым. Вполне вероятно, что Уильям увидел разделенный круг, изображающий составные части категории, в одной из его работ. Математики и философы применяют этот тип иллюстрации еще с XIV века.

Пример использования круга для представления составных частей в XIV веке

Секторная диаграмма, впрочем как и другие инновации Плейфэра, обрела широкое распространение не сразу. В то время Уильяма считали «мошенником» и нечистым на руку бизнесменом, поэтому, как правило, его идеи игнорировались.

Так продолжалось до 1850-х годов, пока круговая диаграмма не обрела еще одного важного сторонника — французского инженера Чарльза Джозефа-Минарда (Charles Joseph-Minard), который подтвердил эффективность данного метода. Минард был «пионером» статистических графиков и, по мнению многих, создателем самых гениальных методик визуализации данных.

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

Карта, созданная пионером визуализации данных Чарльзом Джозефом-Минардом в 1858 году, с использованием круговых диаграмм

Изобретение секторной диаграммы иногда ошибочно приписывают легендарной британской медсестре и общественному деятелю Флоренс Найтингейл (Florence Nightingale). В 1858 году она распределила причины смертности британских солдат в Крымской войне по месяцам. Флоренс использовала эту диаграмму, чтобы убедить правительство Великобритании улучшить санитарные условия и питание в военных лагерях.

Несмотря на то, что ее чертеж смотрится очень мощно и убедительно, на самом деле он не является круговой диаграммой. Это так называемая областная диаграмма (polar-area chart), в которой круг делится на ровные части, но их длина зависит от величины переменной:

Областная диаграмма Флоренс Найтингейл, которую часто путают с круговой диаграммой

Критика в адрес круговой диаграммы

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

В 1923 году американский экономист Карл Густав Карстен (Karl G. Karsten) согласился с предупреждением Бринтона касательно секторных диаграмм. Заявления Карстена в его книге «Диаграммы и графики» (Charts and Graphs) удивительно похожи на те, что мы слышим сегодня:

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

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

Однако, хотя подобные выпады звучали все чаще, статистик Вальтер Кросби Иллс (Walter Crosby Eells) отметил, что многие критические замечания основываются «исключительно на личных предпочтениях». Иллс и другие решили проверить это предположение.

Ранние исследования в этой области были направлены на то, чтобы выяснить, пропорции какой разделенной фигуры — круга или столбца — люди определяют более точно. В ходе эксперимента 1927 года, проведенного Фредериком Крокстоном (Frederick Croxton) и Роем Страйкером (Roy Stryker), ученые попросили более 800 испытуемых угадать пропорции каждого компонента различных сегментированных фигур:

В данном случае пропорции практически идентичны.

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

Тем не менее, как отметил ученый Майкл Макдональд-Росс (Michael Macdonald-Ross) в обширном обзоре «Конфронтации круга и столбца», эти первоначальные эксперименты на самом деле не отображают реальное положение вещей. Несмотря на то, что сегментированный столбец в то время считался основной альтернативой кругу, сегодня специалисты практически всегда предлагают использовать гистограммы или точечные диаграммы.

Основной и, возможно, наиболее мощный удар по секторным диаграммам пришелся на 1980-е года, благодаря усилиям статистика Уильяма Кливленда (William Cleveland). Кливленд является автором новаторской книги «Элементы графических данных», в результате которой, как многие считают, визуализация данных обрела научную основу. Его работа не только описывает базовые «задачи восприятия», решаемые при просмотре диаграммы (например, суждения касаемо длины или площади), но и утверждает, с какими из них люди справляются лучше всего.

В эксперименте, проведенном в 1984 году, Кливленд и его друг, исследователь Роберт МакГилл (Robet McGill) тестировали круговую диаграмму. Вместо того, чтобы сравнивать ее с сегментированным столбцом, они сопоставили разделенный на части круг с его истинным конкурентом — гистограммой:.

В эксперименте Кливленда задачей восприятия гистограммы было определение позиции на шкале, а при просмотре круговых диаграмм — угол сегмента. Ученые обнаружили, что гипотез на счет высоты столбцов гистограммы были в 1,96 раз точнее, чем суждения, касающиеся угла. Кливленд отметил: «Круговые диаграммы не обеспечивают эффективную передачу информацию о разнице значений».

После этого, статистик Наоми Роббинс (Naomi Robbins) проводила исследования, чтобы понять, почему мы так плохо определяем углы. В книге «Создание более эффективных графиков» (Creating More Effective Graphs) она пишет, что, как правило, люди склонны недооценивать острые углы и переоценивать тупые. Роббинс также утверждает, что сегменты круга, направленные в стороны, кажутся большими, чем те, что размещены вверху или внизу.

Это исследование подбодрило ярых противников секторных диаграмм, к которым относятся и сегодняшние ведущие специалисты в области визуализации данных — Эдвард Тафт (Edward Tuft) и Стивен Фью (Spethen Few). Тафт пишет: «Таблица практически всегда лучше, чем дурацкая круговая диаграмма, а Фью добавляет: «Пироги можете оставить на десерт» (pie — пирог по-английски).

Кроме того, круговые диаграммы постоянно высмеиваются популярными СМИ, например, в Washington Post, и в New York Times:

Круговая диаграмма, демонстрирующая эффективность круговой диаграммы

Тем не менее, у этого инструмента есть и свои защитники.

Доводы в защиту круговой диаграммы

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

Некоторые ученые также оспаривают эмпирическую литературу, которая резко критикует секторные диаграммы. Пожалуй, ни один человек не потратил больше времени на поиск аргументов в пользу этих диаграмм, чем психолог Ян Спенс (Ian Spence). В своей книге «Возникновение и использование статистических диаграмм (No Humble Pie: The Origins and Usage of a Statistical Chart) он активно защищает этот осуждаемый многими визуальный элемент.

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

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

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

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

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

Эта диаграмма не очень информативна с точки зрения представления данных, но она красива и оригинальна (Sky — небо, Sunny side of pyramid — солнечная сторона пирамиды, Shady side of pyramid — теневая сторона пирамиды)

Вместо заключения

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

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

Диаграммы прецедентов (Use case diagrams) - применяются для моделирования поведения системы, подсистемы или класса с точки зрения прецедентов (или вариантов использования).

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

Прецеденты;

Участников (актеров);

Отношения зависимости, обобщения и ассоциации.

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

Рис. 3.5.6.1. Графическое отображение примера прецедентов в UML.

Участник (субъект, актер) - множество ролей, которые пользователи прецедентов исполняют при взаимодействии с ними. В качестве участника может выступать человек, устройство, другая программная система. Графическое отображение примера участников приведено на рис. 3.5.6.2.

Рис. 3.5.6.2. Графическое отображение примера участников в UML

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

Моделирование контекста системы, подразумевающего иденти­фикацию участников, взаимодействующих с системой, а также их ролей;

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

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

Моделирование системы необходимо проводить, следуя следую­щим этапам:

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

Рассмотреть и описать потоки событий для прецедентов отраженных на главной диаграмме прецедентов, а именно: предусловия, главный поток, подпотоки, альтернативные потоки, постусловия;

Организовать похожих участников с помощью отношений обобщения/специализа-ции;

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

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

Моделирование требований к системе необходимо проводить, сле­дуя следующим этапам:

Установление контекста системы, идентификация окружающих систему участников;

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

Именование выделенных вариантов поведения как прецедентов;

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

Выделение вариации поведения в новые прецеденты, расширяющие основные потоки событий;

Моделирование выделенных прецедентов, участников, отноше­ний между ними на диаграмме прецедентов;

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

Моделирования диаграмм прецедентов на конкретных примерах приведены на рис. 3.5.6.3. и рис. 3.5.6.4.

Рис. 3.5.6.3. Графическое отображение прецедентов на примере обслуживания

абонентов сотовой телефонной связи.

Следует отметить дополнение прецедентов примечаниями, описывающими не­функциональные специфические требования, т.е.комментариями, которыми могут сопровождаться некоторые отношения между вариантами использования. Так, смысл отношения "include" состоит в том, что в данном примере «Подключение» включает в себя «Выбор оператора связи». Смысл же связи <> в том, что прецедент, например, «Рассмотрение анкеты» "расширяется" вариантом использования «Заключение договора». Это можно в данном случае объяснить тем, что «Заключить договор» можно только после проверки оператором анкеты. «Рассмотрение заявления» "расширяет" прецедент «Блокировка номера», «Замена sim-карты», «Детализация счета», «Замена абонентского номера». Таким образом, связь <> говорит о выполнении того или иного прецедента в зависимости от определенных условий.

Рис. 3.5.6.4. Графическое отображение прецедентов

на примере производственного участка.

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

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

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

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

В программной и системной инженерии USE CASE-диаграмма представляет собой список действий или шагов мероприятия, которые обычно определяют взаимодействие между ролью (известной на языке унифицированного моделирования как «актер») и системой для достижения цели. "Актер" может быть человеческой или другой внешней системой.

Определение

USE CASE-диаграммы языка UML — это важный и ценный метод анализа требований, который широко используется в современной разработке программного обеспечения со времени его официального введения Иваром Джекобсоном в 1992 году. Разработка с использованием приложений зависит от многих моделей процессов и структур, таких как ICONIX, Unified Process (UP), IBM Rational Unified Process (RUP) и Oracle Unified Method (OUM).

История

В 1986 году Ивар Джекобсон сначала сформулировал текстовые, структурные и визуальные методы моделирования для определения вариантов использования. В 1992 году его соавтор книги «Объектно-ориентированная разработка программного обеспечения — подход, основанный на USE CASE», помог популяризовать технику сбора функциональных требований, особенно в разработке ПО.

Другие эксперты также внесли большой вклад, в частности Алистер Кокберн, Ларри Константин, Дин Леффингвелл, Курт Биттнер и Гуннар Овергаард.

Характер взаимодействия элементов

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

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

USE CASE-диаграммы: состав, виды связей

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

Существует три основных элемента процесса:

    "Актеры" — это тип пользователей, которые взаимодействуют с системой.

    Система — функциональные требования, которые определяют предполагаемое поведение элементов.

    Цели — USE CASE обычно инициируются пользователем для выполнения целей, описывающих действия и варианты, участвующие в их достижении.

Характеристики методики:


Шаги при разработке диаграмм:

    Определите пользователей системы.

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

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

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

Терминология

USE CASE-диаграмма в Rational Rose — это диаграмма динамического поведения в UML, которая моделирует функциональность системы с использованием участников, прецедентов и других важнейших объектов. Случаи использования — это набор действий, служб и функций, которые должна выполнять система. В этом контексте система — это то, что разрабатывается или эксплуатируется, например веб-сайт. «Актеры» (условный термин) — это люди или организации, которые работают под определенными ролями внутри системы.

Для чего применяются USE CASE-диаграммы?

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

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

Что такое диаграмма UML?

USE CASE-диаграмма UML — это способ визуализации программного обеспечения с использованием набора диаграмм. Основоположники технологии — Грэди Буч, Джеймс Румбо, Ивар Джекобсон и компания Rational Software Corporation. Их работы легли в основу объектно-ориентированного дизайна, затем спецификации были расширены, чтобы охватить более широкий спектр проектов разработки программного обеспечения. Сегодня UML принимается группой управления объектами (OMG) в качестве стандарта для разработки программного обеспечения для моделирования.

Чтобы ответить на вопрос о том, использования в UML, необходимо сначала понять ее строительные блоки. Общие компоненты включают:

    пользователей, которые взаимодействуют с системой;

    определенную последовательность действий и взаимодействия между участниками и сценарием системы;

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

В профессиональном сообществе программистов для объяснения структуры часто применяют диаграммы USE CASE «по курочке Рябе» — визуальное изображение сюжета популярной сказки в виде схемы.

Что такое UML?

UML означает Unified Modeling Language. UML 2.0 помог расширить исходную спецификацию, чтобы охватить более широкую часть усилий по разработке программного обеспечения, включая гибкие методы. Также были реализованы следующие разработки:


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

Типы диаграмм

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

Эти диаграммы организованы в две различные группы: структурные и диаграммы поведения (или взаимодействия).

Структурные, в свою очередь, делятся на следующие виды диаграмм:

    Классов — являются основой почти каждого объектно-ориентированного метода, включая UML. Они описывают статическую структуру системы.

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

    Объекта — описывают статическую структуру системы в определенное время. Они могут использоваться для проверки диаграмм классов для точности.
    Композитные структурные диаграммы показывают внутреннюю часть класса. Моделируют функциональность системы с использованием участников и прецедентов.

    Компонентов — описывают организацию физических программных компонентов, включая исходный код, исполняемый файл (двоичный код).

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

Поведенческие имеют в своем составе диаграммы:

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

Символы и обозначения

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

Зависимости отмечены пунктирной линией со стрелкой. Использование << >> позволяет указать свойства этой зависимости. Множественность обычно отображается с номером на одном конце стрелки и * с другой.

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

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

Почему мы используем UML?

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

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

Пример USE CASE-диаграммы — графическое изображение взаимодействий между методология, используемая в системном анализе для выявления, уточнения и организации системных требований. В этом контексте термин «система» относится к тому, что разрабатывается или эксплуатируется, например к веб-сайту по продаже и обслуживанию товаров по почте. USE CASE-диаграмма в UML (Unified Modeling Language) — стандартная нотация для моделирования объектов и систем реального мира.

Расшифровка понятий

Цели системы могут включать в себя планирование общих требований, проверку аппаратного проектирования, тестирование и отладку разрабатываемого программного продукта, создание справки по оперативной помощи или выполнение задачи, ориентированной на потребителя. Например, использование диаграммы вариантов USE CASE diagram в среде продаж включает в себя упорядочивание товаров, обновление каталога, обработку платежей и отношения с клиентами. Диаграмма использования выглядит как блок-схема. Интуитивные символы представляют собой элементы системы. Сценарии прецедентов диаграмм USE CASE-банкомата содержат четыре компонента:

    Граница, которая определяет систему интереса к окружающему миру.

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

    Варианты использования, которые являются конкретными ролями, которые играют "актеры" внутри и вокруг системы.

    Взаимоотношения между субъектами.

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

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

    цели и методы их достижения;

    объем системы.

Практическое применение

USE CASE-диаграмма не имеет большого значения при отсутствии четкого понимания процесса — она не будет моделировать порядок выполнения шагов, если не заложен четкий алгоритм. Эксперты рекомендуют использовать данные диаграммы для дополнения текстового варианта. В диаграмме на высоком уровне демонстрируется взаимосвязь между вариантами использования, субъектами и системами. По этой причине часто используются USE CASE uml-диаграммы для политической партии при моделировании структуры.

Диаграмма идеальна в таких ситуациях:

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

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

    выявление контекста и требований системы;

    моделирование основного потока событий в прецеденте.

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

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

Назначение

Цель диаграммы — захватить динамический аспект системы. Однако это определение является слишком общим для описания цели. Так как другие четыре диаграммы (активность, последовательность, совместное использование и Statechart) также имеют одинаковую цель. USE CASE-диаграммы используются для сбора требований к системе, включая внутренние и внешние воздействия (как правило, это требования к дизайну). Следовательно, когда система анализируется для сбора ее функциональных возможностей, разрабатываются примеры использования и идентифицируются участники.

Когда начальная задача завершена, диаграммы случайных ситуаций моделируются для представления внешнего вида. Целями при создании USE CASE-диаграмм можно назвать следующее:

    сбор требований;

    получение внешнего вида системы;

    влияние внешних и внутренних факторов;

    визуализация взаимодействия между требованиями и субъектами.

Процесс создания

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

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

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

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

    Дайте подходящее имя для актеров.

    Покажите на диаграмме отношения и зависимости.

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

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

Сферы применения

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

Чтобы понять динамику, нужно использовать разные типы диаграмм. USE CASE-диаграммы, состав, виды связей — наилучший пример. Ее конкретная цель - собирать системные требования участников.

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

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

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

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

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

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

Введение

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

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

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

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

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

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

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

1.6 Анализ аналогов

1.7 Выводы по главе

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

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

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

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

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

2.2.2 Главное меню

2.2.3 Экран игры

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

2.3.1 Главное меню

2.3.2 Экран игры

2.6 Выводы по главе

3. Разработка

3.1 Перемещение карт

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

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

3.4 Выводы по главе

Заключение

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

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

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

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

? закончить игру.

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

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

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

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

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

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

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

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

Краткое описание

Прецедент позволяет пользователю задать параметры создаваемой игры и начать игровой процесс.

Исполнители

Предусловия

Пользователь нажал кнопку «Новая игра»

Основной поток

1. Игрок выбирает используемый набор карт:

Стандартный набор (84 карты) - по умолчанию.

Дополнение «Время летать» (+42 карты).

2. Игрок выбирает количество игроков:

2 игрока - по умолчанию.

3 игрока.

4 игрока.

3. Игрок нажимает кнопку «Создать игру».

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

Альтернативные потоки

Постусловия

Параметры настроены.

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

Краткое описание

Исполнитель

Предусловия

Основной поток

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

3. Игрок выбирает путь, название файла и подтверждает сохранение.

4. Система сохраняет игру на диск и выдает игроку сообщение.

5. Система предлагает продолжить игру.

Альтернативные потоки

А1. Недостаточно места на диске.

a. Система выводит сообщение, что недостаточно места на диске для записи.

Постусловия

Конфигурация и текущее состояние игры сохранены в файл на жестком диске

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

Краткое описание

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

Исполнитель

Предусловия

Наличие на диске файла с сохраненной конфигурацией игры.

Основной поток

1. Игрок запускает систему.

2. Игрок нажимает на кнопку «Продолжить игру».

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

4. Игрок выбирает файл и подтверждает открытие.

А1. Файл неверной структуры.

5. Система восстанавливает конфигурацию, состояние и количество игроков из файла и загружает игровое поле.

Альтернативные потоки

А1. Файл неверной структуры.

a. Система выводит сообщение о том, что файл поврежден.

b. Система возвращается к 3-ому пункту.

Постусловия

Конфигурация игры восстановлена.

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

Краткое описание

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

Исполнитель

Предусловия

Основной поток

Находясь в главном меню:

1. Игрок нажимает кнопку «Выйти».

2. Система запрашивает подтверждение выхода «Да\Нет»

3. Система завершает свое выполнение и выходит на рабочий стол.

При нахождении в игре:

1. Игрок нажимает кнопку «Выйти в меню».

2. Система запрашивает подтверждение выхода «Да\Нет».

3. Система выходит в главное меню.

Альтернативные потоки

Постусловия

Игра завершилась.

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

Краткое описание

Прецедент представляет собой игровой процесс.

Исполнитель

Предусловия

Выполнен прецедент «Создать новую игру».

Основной поток

Начало игры:

1. Система определяет очередность хода (Выполняет жеребьевку на основе ДСЧ).

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

3. Выполняется прецедент «Получить карты» для новой игры.

Фаза развития:

А2. Игрок уже пропустил ход.

5. Игрок делает ход.

А3. Игрок решает сходить.

А4. У игрока нет карт на руках.

6. Система переводит очередь на другого игрока.

Фаза определения кормовой базы:

7. Система при помощи ДСЧ определяет количество фишек еды, которое будет доступно на фазе питания.

8. Фишки еды появляются на игровом поле.

Фаза питания:

А7. Игрок уже пропустил ход.

9. Игрок делает ход.

А9. Игрок решает сходить.

А5. Игрок нажимает на кнопку «Пропустить ход».

10. Система переводит очередь на следующего игрока.

Фаза вымирания:

11. Выполняется прецедент «Получить карты» в фазу вымирания.

Завершение игры:

12. Система подсчитывает очки, набранные игроками.

13. Система выводит общий результат всех игроков.

14. Появляются кнопки «Создать новую игру» \ «Выйти в меню».

Альтернативные потоки

А1. Все игроки получили карты.

a. Игра переходит на шаг 3.

А2. Игрок уже пропустил ход.

А3. У игрока нет карт на руках.

А4. Игрок решает сходить.

a. Выполняется прецедент «Сделать ход» в фазу развития.

А5. Игрок нажимает на кнопку «Пропустить ход».

a. Выполняется прецедент «Пропустить ход».

А6. Все игроки пропустили ход в фазе развития.

a. Игра переходит на шаг 5.

А7. Игрок уже пропустил ход.

a. Прецедент переходит к шагу 8.

А8. У игрока нет карт на столе.

a. Выполняется прецедент «Пропустить ход».

А9. Игрок решает сходить.

a. Выполняется прецедент «Сделать ход» в фазу питания.

А10. Все игроки пропустили ход в фазу питания.

a. Игра переходит на шаг 9.

А11. Прецедент «Получить карты» в фазу вымирания завершен.

А11.1. Ни один из игроков не получил новых карт.

a. Право первого хода переходит следующему игроку.

b. Игра возвращается на шаг 3.

А11.1. Ни один из игроков не получил новых карт в фазу вымирания.

a. Игра переходит на шаг 10.

А12. Игрок набрал больше всех очков.

a. Выполняется прецедент «Выиграть».

А13. Игрок, вместе с другим игроком, набрал одинаковое количество очков, но больше, чем у остальных игроков.

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

b. Если игрок набрал больше очков, чем соперник - выполняется прецедент «Выиграть».

c. Если игрок набрал меньше очков, чем соперник - выполняется прецедент «Проиграть».

А14. Игрок набрал меньше очков, чем другой игрок.

А15. Игрок нажал кнопку «Создать новую игру».

a. Выполняется прецедент «Создать игру».

А16. Игрок нажал кнопку «Выйти в меню».

a. Выполняется прецедент «Завершить игру».

Точка расширения

· Прецедент «Выиграть».

· Прецедент «Проиграть».

Постусловия

Сыграна партия игры.

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

Краткое описание

Прецедент позволяет игроку получить новые карты из колоды.

Предусловия

Выполнен прецедент «Создать новую игру».

Основной поток

Для новой игры:

1. Система выдает игроку 6 карт из общей колоды.

В фазу вымирания:

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

А2. Ненакормленные животные игрока помещены в сброс и определено количество необходимых для выдачи карт.

1. Система помещает ненакормленных животных в сброс игрока.

2. Система определяет количество необходимых для выдачи карт, равное числу выживших животных игрока + 1.

3. Система выдает игроку одну карту из необходимого количества.

4. Система переводит очередь на следующего игрока.

5. Выполняется прецедент «Получить карты» в фазу вымирания.

Альтернативные потоки

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

a. Прецедент завершается.

А2. Ненакормленные животные игрока помещены в сброс и определено количество выживших животных.

a. Прецедент переходит к шагу 3.

А3. У игрока нет выживших животных и нет карт на руках.

А3.1. В колоде нет карт.

a. Система определяет количество необходимых для выдачи карт, равное 6.

А3.1. В колоде нет карт.

a. Выполняется прецедент «Проиграть».

b. Прецедент переходит к шагу 4.

А4. Игроку выдано всё необходимое количество карт.

a. Прецедент переходит к шагу 4.

Постусловия

Игрок получил новые карты.

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

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

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

Краткое описание

Прецедент пропускает ход игрока.

Предусловия

Игрок обладает правом хода.

Основной поток

1. Система завершает ход игрока. В текущей фазе игрок больше не будет получать право хода.

Альтернативные потоки

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

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

b. Прецедент завершается.

Постусловия

Игрок пропускает ход и больше не может ходить в текущую фазу.

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

Краткое описание

Прецедент позволяет игроку сделать ход.

Предусловия

Игрок обладает правом хода.

Основной поток

Фаза развития:

Фаза питания:

А5. Игрок применяет свойство.

Альтернативные потоки

А1. Игрок кладет карту в виде животного.

a. Выполняется прецедент «Положить карту в виде животного».

А2. Игрок кладет карту, как свойство.

a. Выполняется прецедент «Положить карту, как свойство».

b. Прецедент «Сделать ход» завершается.

А3. В кормовой базе не осталось фишек еды. У игрока нет свойств, которые можно применить.

a. Выполняется прецедент «Пропустить ход».

А4. Игрок берет фишку еды из кормовой базы.

a. Выполняется прецедент «Взять фишку еды».

А5. Игрок применяет свойство.

a. Выполняется прецедент «Применить свойство».

А5.1. У игрока нет свойств, которые можно применить.

a. Прецедент «Сделать ход» завершается.

Постусловия

Игрок делает ход в текущую фазу.

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

Краткое описание

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

Предусловия

Игрок имеет право хода.

Основной поток

А1. Игрок отпустил карту.

2. Игрок перетаскивает карту на свободное место своего игрового поля.

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

А2. Карта находится над другой картой своего игрового поля или поля противника.

4. Игрок отпускает карту.

5. Карта располагается на игровом поле игрока изображением животного вверх.

Альтернативные потоки

А1. Игрок отпустил карту.

А2. Игрок отпустил карту над другой картой своего игрового поля или поля противника.

a. Выполняется прецедент «Положить карту как свойство» с шага 3.

А3. Игрок отпустил карту над игровым полем противника.

Постусловия

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

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

Краткое описание

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

Предусловия

Игрок имеет право хода.

Основной поток

1. Игрок нажимает на выбранную карту и удерживает её.

А1. Игрок отпустил карту.

2. Игрок перетаскивает карту на животное на своем игровом поле.

3. Система выделяет карту животного и информирует игрока о том, что карта будет расположена, как свойство этого животного.

4. Игрок отпускает карту.

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

Альтернативные потоки

А1. Игрок отпустил карту.

a. Карта не меняет положения и остается на «руках» у игрока.

А2. Игрок отпустил карту на пустое место своего игрового поля.

a. Выполняется прецедент «Положить карту в виде животного» с шага 3.

А3. Игрок отпустил карту на пустое место игрового поля противника.

a. Карта возвращается обратно в «руки» игрока.

А4. Игрок отпустил карту над животным противника.

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

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

А5. Свойство на карте относится к парным.

a. Система применяет свойство к выбранному животному и запрашивает указать второе животное игрока.

b. Игрок указывает 2е животное.

c. Система располагает указанные карты рядом друг с другом.

d. Над выбранными животными появляется название свойства и соединительная линия между этими свойствами.

А5.1. У игрока только 1 животное.

a. Система информирует игрока о том, что парное свойство не может быть размещено, т.к. у игрока не достаточно карт животных.

b. Карта возвращается обратно в «руки» игрока.

А6. На карте имеется 2 свойства на выбор.

a. Система выводит модальное окно с вариантами свойств.

b. Игрок нажимает на выбранное свойство.

c. Прецедент переходит к шагу 5.

A7. Свойство не может быть применено дважды на одну карту животного.

a. Система информирует игрока о том, что свойство не может быть размещено дважды на одно и то же животное.

Постусловия

На игровом поле игрока к карте животного добавляется название и признаки свойства, которыми оно обладает.

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

Краткое описание

Прецедент позволяет игроку накормить одно из его животных.

Предусловия

Игрок имеет право хода.

Основной поток

1. Игрок нажимает на фишку еды в кормовой базе и удерживает её.

А1. Игрок отпустил фишку.

2. Игрок перетаскивает фишку еды на животное на своем игровом поле.

3. Система выделяет карту животного и информирует игрока о том, что данное животное получит +1 к запасу пищи.

4. Игрок отпускает фишку еды.

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

Альтернативные потоки

А1. Игрок отпустил фишку.

a. Фишка не меняет положения и остается в кормовой базе.

А2. Животное игрока уже накормлено.

a. Система выделяет карту животного и информирует игрока о том, что данное животное не может получить новую фишку еды, т.к. является полностью накормленным.

b. Если игрок отпускает фишку еды, то фишка возвращается в кормовую базу.

А3. Игрок отпустил фишку еды вне своего игрового поля.

А4. Игрок отпустил фишку вне карты животного на своем игровом поле.

a. Фишка возвращается в кормовую базу.

Постусловия

Текущее животное игрока пополняет запас пищи на 1 единицу.

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

Краткое описание

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

Предусловия

Игрок имеет право хода.

Основной поток

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

2. Игрок нажимает на доступное свойство.

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

Альтернативные потоки

А1. Использовано свойство «Хищник».

a. Система подсвечивает животных, которые могут быть атакованы.

b. Игрок выбирает животное, которое собирается атаковать.

c. Система проверяет защитные свойства этого животного.

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

e. Если свойств нет или оно не сработало - животное считается съеденным и пропадает с поля. Животное атаковавшего игрока получает 2 единицы еды.

А2. Свойство может применяться один раз за раунд.

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

Постусловия

Активируется свойство животного, принадлежащего игроку.

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

В качестве среды для разработки компьютерной игры «Эволюция» был выбран игровой движок Unity. Unity - это мультиплатформенный инструмент для разработки 2D/3D игр и интерактивного контента. На сегодняшний день доступна 5 версия движка, в которой реализованы все самые последние 3D и 2D технологии. Одной из таких технологий является UI System, которая содержит классы, значительно упрощающие работу с 2D элементами. . Данная технология наиболее подходит для создания игрового пространства и интерактивного интерфейса компьютерной игры «Эволюция». Базовый набор UI элементов и их назначение представлены в таблице 1.16.

Таблица 1.16. Базовый набор UI элементов в Unity.

Название UI элемента

Назначение

Отображение

Представляет собой абстрактное пространство в котором производится настройка и отрисовка UI. Все элементы UI должны быть дочерними для Сanvas.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1.6 Анализ аналогов

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

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

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

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

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

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

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

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

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

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

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

? игра расположена в социальной сети «вконтакте» из-за чего отсутствует возможность играть без подключения к интернету;

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

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

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

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

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

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

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

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

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

1.7 Выводы по главе

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

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

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

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

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

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

Прецедент

Название класса

Описание класса

Создать новую игру

Отвечает за отображение UI элементов на экране и взаимодействие пользователя с ними.

Отвечает за загрузку экранов.

Задать параметры

Статический класс для хранения настроек игры.

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

Продолжить игру

Закончить игру

PlayerController

Отвечает за инициализацию игроков. Управляет очередностью хода.

Отвечает за переход между фазами игры.

Получить карты

Хранит информацию о типе игрока, его картах на руках, на столе и в сбросе.

Отвечает за хранение и отображение карт находящихся «на руках» у игрока.

Представляет собой колоду карт.

Отвечает за хранение и отображение карт находящихся в сбросе у игрока.

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

Хранит информацию о свойстве, изображенном на карте. Название, описание и изображение этого свойства.

Выиграть

Проиграть

Пропустить ход

Сделать ход

Положить карту в виде животного

Представляет собой карту на столе игрока, положенную в виде животного.

Положить карту, как свойство

Отвечает за хранение и отображение карт находящихся «на столе» игрока.

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

Взять фишку еды

Отвечает за генерацию, хранение и отображение фишек еды в фазу питания.

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

Применить свойство

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

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

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

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

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

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

2.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. Подробный просмотр карты.

Игровой стол (см. рис. 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, которое содержит следующие значения:

Screen Space - Overlay. В данном режиме полотно масштабируется по размерам экрана и отрисовывается без связи со сценой или камерой (UI будет отрисован даже в том случае, когда на сцене нету камеры). В случае изменения размера окна, полотно будет растянуто под размеры экрана. Полотно будет рисоваться поверх всех остальных графических элементов.

Screen Space - Camera. В данном режиме полотно рисуется на плоскости перпендикулярной взгляду камеры, на некотором расстоянии от точки взгляда. Размер полотна не меняется с изменением расстояния, оно всегда масштабирется, чтобы заполнять разрез пирамиды видимости у камеры (camera frustrum view). Интерфейс будет заслоняться любыми 3D элементами, которые находятся перед плоскостью интерфейса.

World Space. В данном режиме полотно располагается в мировых координатах и является плоским 3D объектом.

2.3.1 Главное меню

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

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

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

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

2.3.2 Экран игры

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

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

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

Рис. 2.14. Отладка сцены «Игровое поле».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    дипломная работа , добавлен 11.02.2017

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

    курсовая работа , добавлен 09.11.2012

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

    дипломная работа , добавлен 27.10.2017

    История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.

    курсовая работа , добавлен 27.09.2013

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

    методичка , добавлен 24.10.2012

    Описание алгоритма хода ЭВМ в режиме "пользователь-компьютер" в игре "Морской бой". Описание совокупности классов, их полей и методов. Разработка интерфейса и руководства пользователя по проведению игры. Листинг программы, написанной на языке Java.

    курсовая работа , добавлен 26.03.2014

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

    курсовая работа , добавлен 17.01.2011

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

    контрольная работа , добавлен 20.12.2012

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

    курсовая работа , добавлен 03.12.2014

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

Аннотация: Предметом этого курса является The UML - унифицированный язык моделирования. В предыдущей лекции было рассказано о том, что же такое UML, о его истории, назначении, способах использования языка, структуре его определения, терминологии и нотации. Было отмечено, что модель UML - это набор диаграмм. В этой лекции мы рассмотрим такие вопросы: почему нужно несколько видов диаграмм; виды диаграмм; ООП и последовательность построения диаграмм

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

Мы строим модели сложных систем, потому что не можем описать их полностью, "окинуть одним взглядом". Поэтому мы выделяем лишь существенные для конкретной задачи свойства системы и строим ее модель, отображающую эти свойства. Метод объектно-ориентированного анализа позволяет описывать реальные сложные системы наиболее адекватным образом. Но с увеличением сложности систем возникает потребность в хорошей технологии моделирования. Как мы уже говорили в предыдущей лекции, в качестве такой "стандартной" технологии используется унифицированный язык моделирования ( Unified Modeling Language , UML ), который является графическим языком для спецификации, визуализации, проектирования и документирования систем. С помощью UML можно разработать подробную модель создаваемой системы, отображающую не только ее концепцию, но и конкретные особенности реализации. В рамках UML -модели все представления о системе фиксируются в виде специальных графических конструкций, получивших название диаграмм.

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

Почему нужно несколько видов диаграмм

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Виды диаграмм

UML 1.5 определял двенадцать типов диаграмм , разделенных на три группы:

  • четыре типа диаграмм представляют статическую структуру приложения;
  • пять представляют поведенческие аспекты системы;
  • три представляют физические аспекты функционирования системы (диаграммы реализации).

Текущая версия UML 2.1 внесла не слишком много изменений. Диаграммы слегка изменились внешне (появились фреймы и другие визуальные улучшения), немного усовершенствовалась нотация , некоторые диаграммы получили новые наименования.

Впрочем, точное число канонических диаграмм для нас абсолютно неважно, так как мы рассмотрим не все из них, а лишь некоторые - по той причине, что количество типов диаграмм для конкретной модели конкретного приложения не является строго фиксированным. Для простых приложений нет необходимости строить все без исключения диаграммы. Например, для локального приложения не обязательно строить диаграмму развертывания. Важно понимать, что перечень диаграмм зависит от специфики разрабатываемого проекта и определяется самим разработчиком. Если же любопытный читатель все-таки пожелает узнать обо всех диаграммах UML , мы отошлем его к стандарту UML (http://www.omg.org/technology/documents/modeling_spec_catalog.htm#UML). Напомним, что цель этого курса - не описать абсолютно все возможности UML , а лишь познакомить с этим языком, дать первоначальное представление об этой технологии.

Итак, мы кратко рассмотрим такие виды диаграмм, как:

  • диаграмма прецедентов ;
  • диаграмма классов;
  • диаграмма объектов ;
  • диаграмма последовательностей;
  • диаграмма взаимодействия;
  • диаграмма состояний;
  • диаграмма активности ;
  • диаграмма развертывания .

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

Диаграмма прецедентов (use case diagram)

Любые (в том числе и программные) системы проектируются с учетом того, что в процессе своей работы они будут использоваться людьми и/или взаимодействовать с другими системами. Сущности, с которыми взаимодействует система в процессе своей работы, называются экторами , причем каждый эктор ожидает, что система будет вести себя строго определенным, предсказуемым образом. Попробуем дать более строгое определение эктора. Для этого воспользуемся замечательным визуальным словарем по UML Zicom Mentor :

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

Графически эктор изображается либо " человечком ", подобным тем, которые мы рисовали в детстве, изображая членов своей семьи, либо символом класса с соответствующим стереотипом , как показано на рисунке. Обе формы представления имеют один и тот же смысл и могут использоваться в диаграммах. "Стереотипированная" форма чаще применяется для представления системных экторов или в случаях, когда эктор имеет свойства и их нужно отобразить (рис. 2.1).

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


Рис. 2.1.

Тот же внимательный читатель мог заметить промелькнувшее в определении эктора слово "прецедент". Что же это такое? Этот вопрос заинтересует нас еще больше, если вспомнить, что сейчас мы говорим о диаграмме прецедентов . Итак,

Прецедент (use-case) - описание отдельного аспекта поведения системы с точки зрения пользователя (Буч).

Определение вполне понятное и исчерпывающее, но его можно еще немного уточнить, воспользовавшись тем же Zicom Mentor "ом:

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

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

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


  • Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: