Проектирование игрового симулятора

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Введение

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

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

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

1. Исследовательский раздел

1.1 Анализ существующих аналогов

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

Среди найденных аналогов для сравнения с предлагаемым программным продуктом, можно выделить наиболее интересные, найденные на сайтах www. ua. all-biz. info, www. ourgames. ru, www. myplaycity. ru. Большинство программных продуктов сети Интернет являются бесплатными, и, как правило, занимают от нескольких Килобайт до 10 Мегабайт дискового пространства. Но также множество популярных игровых симуляторов являются платными, с этим и связана основная цель их разработки. Сравнение и анализ будет проводиться со схожей программой «Galaxy War» (рисунок 1. 1).

Рисунок 1.1 — Игровой процесс в «Galaxy War».

При анализе существующего программного обеспечения выявлен ряд недостатков:

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

— отсутствие ведения статистики игроков;

— отсутствие анимации.

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

— выбор уровня сложности игрового процесса;

— введение статистики игроков;

— анимация игрового процесса;

— открытость кодов основных модулей.

При этом необходимо обеспечить:

— надежность работы программы;

— кроссплатформенность;

— гибкость и настраиваемость;

— современный интерфейс;

— открытость и доступность программы.

1.2 Анализ исходных данных

1.2.1 Анализ физического движка

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

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

Движок Box2D является кроссплатформенным ПО, он написан на платформо-независимом языке программирования C++, поэтому может работать (выполняться) на любой платформе, на которой присутствует компилятор C++. Движок может быть скомпилирован в режимах с фиксированной запятой и с плавающей запятой. Программная реализация представлена в листингах Б1, Б2.

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

Системы обнаружения столкновений и обработки ограничений состоят из трёх частей: возрастающей широкой фазы Sweep and prune, блока непрерывных (продолжающихся) обнаружений столкновений, и стабильного линейного во времени блока решения столкновений. Эти алгоритмы предоставляют эффективную симуляцию быстро движущихся тел и больших массивов объектов без упускания пересечений и появления нестабильностей.

1.2.2 Анализ графического движка

Для разработки данного программного продукта в качестве вспомогательного средства использовался графический движок Haaf`sGameEngine (HGE). Преимущества использования данного средства заключаются в том, что оно содержит готовые функции для работы с DirectDraw, позволяющие создавать высокопроизводительные приложение с использованием сложных графических элементов, таких как: анимированные текстуры, деформаторы и системы частиц.

Движок выбран, так как в нём разрабатывают 2D игры. HGE использует 3D ускоритель для рендеринга объектов. А это означает высокую скорость рендеринга. Программная реализация представлена в листинге Б3.

1.3 Обоснование выбора программных средств

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

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

Язык VisualC++ является объектно-ориентированным и прост в изучении. Также не менее важным обстоятельством выбора данного языка является то, что он входит в состав MicrosoftVisualStudio — одной из ведущих систем разработки программного обеспечения.

Так как при реализации программы использовался графический движок HGE, то в программе должны присутствовать две специальные функции: функция инициализации движка (раздел 3 листинг 1) и функция отрисовки (раздел 3 листинг 2). Функция инициализации движка запускает сам движок, а так же производит загрузку всех необходимых ресурсов: текстур, значений системных переменных, графических объектов и модулей управления; и инициализацию объектов. Функция отрисовки производит отображение на экране интерфейса и графических объектов.

1.4 Выводы

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

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

2. Специальный раздел

2.1 Разработка структурной схемы программного продукта

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

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

— запуск программы;

— загрузка ресурсов;

— инициализация графического движка;

— загрузка и сохранение настроек и данных;

— создание главного меню;

— создание меню настроек;

— изменение настроек;

— инициализация физического движка;

— проведение симуляции;

— сохранение счёта и завершение симуляции;

— сохранение настроек и данных;

— выгрузка ресурсов;

— отключение графического движка;

— завершение работы программы.

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

/

Рисунок 2.1 — Структурная схема программы

2.2 Разработка модулей программного продукта

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

— логический модуль;

— модуль осуществления физических взаимодействий;

— графический модуль.

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

/

Рисунок 2.2 — Схема взаимодействия модулей

Модуль логики должен содержать в себе следующие структурные компоненты:

— UI;

— инициализация графики и загрузка ресурсов;

— инициализация физики;

— игровой процесс.

UI с помощью функции графического движка обеспечивает пользователю важную информацию, а именно графическое отображение объектов на экране.

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

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

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

— создание игрового поля, игрока и противников;

— управление кораблём игрока;

— обработка игровых событий.

2.2.1 Разработка модуля логики

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

Управление кораблём игрока позволяет с помощью мыши осуществлять управление его кораблём.

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

На рисунке 2.3 изображена структурная схема модуля логики.

/

Рисунок 2.3 — Структурная схема модуля логики

2.2.2 Разработка модуля обеспечения физических взаимодействий

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

— инициализация мира и физических объектов;

— симуляция физики;

— обнаружение коллизий.

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

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

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

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

/

Рисунок 2.4 — Структурная схема модуля обеспечения физических взаимодействий

2.2.3 Разработка графического модуля

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

— загрузка и инициализация графических объектов;

— отображение объектов на экране.

Графический модуль создаёт и инициализирует графические объекты

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

На рисунке 2.5 изображена структурная схема графического модуля.

/

Рисунок 2.5 — Структурная схема графического модуля

2.3 Разработка интерфейса программного продукта

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

2.3.1 Определения и стили пользовательских интерфейсов

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

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

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

В настоящее время различают следующие типы интерфейсов:

— аппаратный;

— программный;

— аппаратно-программный;

— пользовательский.

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

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

— графический пользовательский интерфейс (GUI);

— пользовательский Web-интерфейс (WebUI);

— пользовательские интерфейсы карманных устройств (HUI);

— объектно-ориентированные пользовательские интерфейсы.

Графический пользовательский интерфейс GraphicalUserInterface определяется как стиль взаимодействия «пользователь-компьютер», в котором применяются четыре фундаментальных элемента:

— окна (Windows);

— пиктограммы (Icons);

— меню (Menus);

— указатели (Pointers).

По заглавным буквам перечисленных выше элементов такие интерфейсы называют иногда WIMP-интерфейсами.

Свойства GUI интерфейса:

— возможность непосредственного манипулирования;

— поддержка манипуляторов;

— использование графики;

— наличие области для функций и данных приложения.

Объектно-ориентированный пользовательский интерфейс должен обладать следующими свойствами:

— обеспечивать непосредственный ввод данных;

— обеспечивать контекстную зависимость от объектов.

2.3.2 Разработка пользовательского интерфейса

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

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

— начать игру;

— настройки;

— счёт;

— выход.

Рисунок 2.6 — Главное меню

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

Рисунок 2.7 — Экран настроек

Рисунок 2.8 — Новая игра

Рисунок 2.9. — Счёт

2.5 Выводы

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

3. Технологический раздел

3.1 Технология разработки программного продукта

3.1.1 Основные понятия и определения

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

ПО — это интеллектуальный продукт, не зависящий от среды, на которой он записан.

Программные средства (Softwareproduct) — это набор компьютерных программ, процедур и, возможно, связанных с ними документации и данных.

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

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

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

3.1.2 Жизненный цикл программного продукта

Жизненный цикл программного продукта (ЖЦ ПО) — это непрерывный процесс, который начинается с момента принятия решения о необходимости его создания и заканчивается в момент его полного изъятия из эксплуатации.

Основным нормативным документом, регламентирующим ЖЦ ПО, является международный стандарт ISO/IEC 12 207 (IEC — InternationalElectrotechnicalCommission — Международная комиссия по электротехнике). Он определяет структуру ЖЦ, содержащую процессы, действия и задачи, которые должны быть выполнены во время создания ПО.

Структура ЖЦ ПО по стандарту:

— основные процессы ЖЦ ПО: приобретение (заказ), поставка, разработка, эксплуатация, сопровождение;

— вспомогательные процессы, обеспечивающие выполнение основных процессов: документирование, управление конфигурацией, обеспечение качества, верификация, валидация (аттестация), оценка (совместный просмотр), аудит, решение проблем;

— организационные процессы: управление, создание и сопровождение инфраструктуры, усовершенствование, обучение.

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

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

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

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

Модель прототипа позволяет создать прототип ПП до или в течение этапа составления требований к ПП.

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

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

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

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

Модель прототипа обладает целым рядом преимуществ:

— взаимодействие заказчика с разрабатываемой системой начинается на раннем этапе;

— благодаря реакции заказчика на прототип, сводится к минимуму число неточностей в требованиях;

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

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

— прототип представляет собой формальную спецификацию, воплощенную в ПП;

— прототип позволяет очень гибко выполнять проектирование и разработку, включая несколько итераций на всех фазах жизненного цикла разработки;

— заказчик всегда видит прогресс в процессе разработки ПП;

— возможность возникновения противоречий между разработчиками и заказчиками сведена к минимуму;

— уменьшается число доработок, что снижает стоимость разработки;

— возникающие проблемы решаются на ранних стадиях, что резко сокращает расходы на их устранение;

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

3.2 Разработка программного продукта

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

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

3.2.1 Реализация

В ходе реализации создан графический интерфейс пользователя, написан код программы, реализующий все её функции. Основные функции программы представлены в листингах 1 — 6.

Листинг 3.1 — Функция инициализации графического движка

int WINAPI WinMain (HINSTANCE, HINSTANCE, LPSTR, int)

{//установка поддержки русского языка

setlocale (LC_CTYPE,"Russian");

//передача движку служебной иформации

hge = hgeCreate (HGE_VERSION); //версия движка

hge-> System_SetState (HGE_LOGFILE, «lsr. log»);//лог-файл

hge-> System_SetState (HGE_FRAMEFUNC, FrameFunc); //функция, содержащая логику

hge-> System_SetState (HGE_RENDERFUNC,

RenderFunc); //Функция отрисовки

hge-> System_SetState (HGE_TITLE, «Lonely Space Ranger»); //Заголовок окна

hge-> System_SetState (HGE_WINDOWED, true);//Режим (на весь экран/в окне)

hge-> System_SetState (HGE_SCREENWIDTH, 1024); //разрешение

hge-> System_SetState (HGE_SCREENHEIGHT, 768);

hge-> System_SetState (HGE_SCREENBPP, 32); //глубина цвета

hge-> System_SetState (HGE_SHOWSPLASH, true);

//инициализация движка

if (hge-> System_Initiate ())

{

hge-> Random_Seed (hge->Random_Int (0,2000));//инициализация RNG

phInit (); //инициализаци физики

fnt=new hgeFont («Data/font1. fnt»);//подгрузка шрифта

Load_All (); //загрузка текстур

b_need_to_init=true;

//создание курсора

cursor=new hgeSprite (t_cursor, 0,0,20,20);

cursor-> SetHotSpot (10,10);

//запуск приложения

hge-> System_Start ();

}

//завершение работы движка

hge-> System_Shutdown ();

//выгрузка объектов

hge-> Release ();

return 0;

}

Листинг 3.2 — Функция отрисовки

boolRenderFunc ()

{

//создание сцены

hge-> Gfx_BeginScene ();

//заливка фона

hge-> Gfx_Clear (0xFF000000);

//отрисовка фона

space-> Render (0,0);

//отрисовка снарядов

bullets-> render ();

//отрисовк аигрока

hero-> render ();

//отрисовка противников

enemies-> render ();

//установка цвета шрифта

fnt-> SetColor (0xFFFFFFFF);

//Отображение здоровья игрока

fnt-> printf (10,10,HGETEXT_LEFT,"", hero->health);

//определение положения курсора мыши

floatx, y;

hge-> Input_GetMousePos (&x,&y);

//отрисовка курсора

cursor-> Render (x, y);

//завершене сцены

hge-> Gfx_EndScene ();

return false;

Физический движок Box2D, который используется реализации программы предполагает наличие в ней нескольких специальных функций: функция инициализации 2D пространства (листинг 3), слушатель контактов (листинг 4) и функция разрешения коллизий (листинг 5). Функция инициализации мира создает объекты, необходимые для проведения симуляции физических процессов, а так же инициализирует переменные. Слушатель контактов во время работы программы проверяет состояние мира, и, в случае обнаружения столкновения, вызывает процедуру его обработки. Функция разрешения коллизий предоставляет слушателю контактов пользовательский алгоритм обработки столкновений.

Листинг 3.3 — Функция инициализации 2D пространства

voidphInit ()

{

//задание вектора гравитации

b2Vec2 gravity (0. 0f, 0. 0f);

booldoSleep = true; //переменная обозначает, что разрешен переход объектов в режим сна для снижения загрузки

//создание слушателя контактов

cl=newContactListener ();

//инициализация 2D пространства

phWorld=new b2World (gravity, doSleep);

//присвоение слушателя миру

phWorld-> SetContactListener (cl);

Листинг 3.4 — Слушатель контактов

classContactListener: public b2ContactListener

{

public:

//передача слушателю пользовательского алгоритма обработки столкновений

voidPreSolve (b2Contact* contact, const b2Manifold* oldManifold);

}*cl;

Листинг 3.5 — Функция разрешения коллизий

voidContactListener: :PreSolve (b2Contact* contact, const b2Manifold* oldManifold)

{

//получение информации о столкновении

b2WorldManifold worldManifold;

contact-> GetWorldManifold (&worldManifold);

b2PointState state1[2], state2[2];

b2GetPointStates (state1, state2, oldManifold, contact-> GetManifold ());

if (state2[0] == b2_addState)

{

//получение информации о столкнувшихся объектах

b2Body* bodyA = contact-> GetFixtureA ()->GetBody ();

b2Body* bodyB = contact-> GetFixtureB ()->GetBody ();

inf *infoA=((inf *)(bodyA-> GetUserData ())),*infoB=((inf *)(bodyB-> GetUserData ()));

//Следующие условия определяют реакцию на столкновение объектов различных типов

//При столкновении двух пуль обе уничтожаются

if ((infoA-> type==BULLET)&&(infoB->type==BULLET)) {((c_projectile*)(infoA-> owner))->dispose=true; ((c_projectile*)(infoB-> owner))->dispose=true;}

if ((infoA-> type==ENEMY_BULLET)&&(infoB->type==ENEMY_BULLET)) {((c_projectile*)(infoA-> owner))->dispose=true; ((c_projectile*)(infoB-> owner))->dispose=true;}

if ((infoA-> type==ENEMY_BULLET)&&(infoB->type==BULLET)) {((c_projectile*)(infoA-> owner))->dispose=true; ((c_projectile*)(infoB-> owner))->dispose=true;}

if ((infoA-> type==BULLET)&&(infoB->type==ENEMY_BULLET)) {((c_projectile*)(infoA-> owner))->dispose=true; ((c_projectile*)(infoB-> owner))->dispose=true;}

//При столкновении противника с пулей игрока противнику наносится урон

if ((infoA-> type==BULLET)&&(infoB->type==ENEMY)) {((c_enemy*)(infoB-> owner))->health-=((c_projectile*)(infoA->owner))->damage; ((c_projectile*)(infoA-> owner))->dispose=true;}

if ((infoB-> type==BULLET)&&(infoA->type==ENEMY)) {((c_enemy*)(infoA-> owner))->health-=((c_projectile*)(infoB->owner))->damage; ((c_projectile*)(infoB-> owner))->dispose=true;}

//При столкновении игрока с пулей противника игроку наносится урон

if ((infoA-> type==ENEMY_BULLET)&&(infoB->type==PLAYER)) {((c_player*)(infoB-> owner))->health-=((c_projectile*)(infoA->owner))->damage; ((c_projectile*)(infoA-> owner))->dispose=true;}

if ((infoB-> type==ENEMY_BULLET)&&(infoA->type==PLAYER)) {((c_player*)(infoA-> owner))->health-=((c_projectile*)(infoB->owner))->damage; ((c_projectile*)(infoB-> owner))->dispose=true;}

}

Листинг 3.6 — Реализация меню

#include «globals. h»

#include «states. h»

c_Menu: :c_Menu (c_stateManager* _manager): c_state ()

{

manager=_manager;

isActive=true;

Init ();

}

voidc_Menu: :Init ()

HGEGUI_CYCLED);

gui-> SetCursor (cursor);

gui-> SetFocus (1);

gui-> Enter ();

ready=true;

voidc_Menu: :Render ()

{

space-> Render (0,0);

if (Settings) s_player-> RenderEx (600,360,0,0. 25);

gui-> Render ();

boolc_Menu: :Update ()

{

if (isActive)

{

floatdt=hge-> Timer_GetDelta ();

int id;

staticintlastid=0;

staticboolMain=true;

staticbool Scores=false;

id=gui-> Update (dt);

if (Main)

{

if (hge-> Input_KeyDown (HGEK_ESCAPE)) { lastid=4; gui-> Leave ();}

if (id == -1)

{

switch (lastid)

{

case 1:

manager-> Add (*(new c_Gameplay ()));

gui-> SetFocus (1);

gui-> Enter ();

break;

case 2:

for (int i=4; i>0;gui->DelCtrl (i--));

switch (Difficulty)

{

case 1:

gui-> AddCtrl (new hgeGUIMenuItem (1,fnt, 360,300,-1. 0f," «, false, false));

break;

case 2:

gui-> AddCtrl (new hgeGUIMenuItem (1,fnt, 360,300,-1. 0f," «, false, false));

break;

default:

gui-> AddCtrl (new hgeGUIMenuItem (1,fnt, 360,300,-1. 0f," «, false, false));

break;

gui-> AddCtrl (new hgeGUIMenuItem (2,fnt, 360,360,-1. 0f,"", false, false));

gui-> AddCtrl (new hgeGUIMenuItem (3,fnt, 500,440,0. 0f, ««, false));

Main=false;

Settings=true;

gui-> SetFocus (1);

gui-> Enter ();

break;

case 3:

for (int i=4; i>0;gui->DelCtrl (i--));

gui-> AddCtrl (new hgeGUIMenuItem (1,fnt, 500,300,-1. 0f," false, true, true));

char* tt; tt=new char;

sprintf (tt,"%i", Score);

gui-> AddCtrl (new hgeGUIMenuItem (2,fnt, 500,340,-1. 0f, tt, false, true, true));

gui-> AddCtrl (new hgeGUIMenuItem (3,fnt, 500,440,0. 0f, ««, false));

Main=false;

Scores=true;

gui-> SetFocus (1);

gui-> Enter ();

break;

case 4: return true;

int i=1;

}

}

else if (id) { lastid=id; gui-> Leave (); }

}

else

if (Settings)

{

if (hge-> Input_KeyDown (HGEK_ESCAPE)) { lastid=3; gui-> Leave ();}

if (id == -1)

{

switch (lastid)

{

case 1:

switch (Difficulty)

{

case 1:

Difficulty=2;

((hgeGUIMenuItem*)gui-> GetCtrl (1))->title=" «;

break;

case 2:

Difficulty=3;

((hgeGUIMenuItem*)gui-> GetCtrl (1))->title=" «;

break;

default:

Difficulty=1;

((hgeGUIMenuItem*)gui-> GetCtrl (1))->title=" «;

break;

}

gui-> SetFocus (1);

gui-> Enter ();

break;

case 2:

switch (Model)

{

case 0:

Model=1;

break;

case 1:

Model=2;

break;

default:

Model=0;

break;

}

s_player-> SetTextureRect (200*Model, 0,200,200);

gui-> SetFocus (2);

gui-> Enter ();

break;

case 3:

for (int i=3; i>0;gui->DelCtrl (i--));

gui-> AddCtrl (new hgeGUIMenuItem (1,fnt, 500,300,0. 0f," «));

gui-> AddCtrl (new hgeGUIMenuItem (2,fnt, 500,340,0. 1f," «));

gui-> AddCtrl (new

hgeGUIMenuItem (3,fnt, 500,380,0. 2f,"Счет"));

gui-> AddCtrl (new hgeGUIMenuItem (4,fnt, 500,420,0. 3f," «));

Main=true;

Settings=false;

gui-> SetFocus (1);

gui-> Enter ();

break;

}

else if (id) { lastid=id; gui-> Leave (); }

}

else

if (Scores)

{

if (hge-> Input_KeyDown (HGEK_ESCAPE)) { lastid=3; gui-> Leave ();}

if (id == -1)

{

switch (lastid)

{

case 1:

gui-> SetFocus (1);

gui-> Enter ();

break;

case 2:

gui-> SetFocus (1);

gui-> Enter ();

break;

case 3:

for (int i=3; i>0;gui->DelCtrl (i--));

gui-> AddCtrl (new hgeGUIMenuItem (1,fnt, 500,300,0. 0f,""));

gui-> AddCtrl (new hgeGUIMenuItem (2,fnt, 500,340,0. 1f,""));

gui-> AddCtrl (new hgeGUIMenuItem (3,fnt, 500,380,0. 2f,"Счет"));

gui-> AddCtrl (new hgeGUIMenuItem (4,fnt, 500,420,0. 3f,""));

Main=true;

Scores=false;

gui-> SetFocus (1);

gui-> Enter ();

break;

}

}

else if (id) { lastid=id; gui-> Leave (); }

}

}

return false;

}

voidc_Menu: :Dispose ()

{

this-> ~c_Menu ();

}

c_Menu: :~c_Menu ()

{

}

3.3 Выводы

В третьем разделе выбрана модель прототипа для проектирования программного продукта, в соответствии с которой разработан программный продукт «LonelySpaceRanger». Код программы представлен на языке VisualС++. Данный П П удовлетворяет всем требованиям заказчика, устойчив к сбоям, корректно работает под ОС Windows.

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

4.1 Характеристика программного продукта

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

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

Достоинства программного продукта состоит в его полезности, удобном интерфейсе, реализации и эксплуатации.

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

Использовался:

— ОС (операционные системы): MS Windows., Windows SP;

— Офисные программы: MS Office;

— ПО для работы с электронными таблицами: MS Excel;

— Программы работы с изображениями: Adobe Photoshop, Corel DRAW Graphics Suite, векторный редактор Draw; (в составе Openоffice), другие;

— Широкий выбор антивирусов и фаерволов.

Программное обеспечение -- совокупность программ, процедур и правил, а также документации, относящихся к функционированию системы обработки данных (СТ ИСО 2382/1−84).

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

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

Для написания программного продукта «LonelySpaceRanger» был использован язык Visual С++, потому что в этом языке очень удобный интерфейс (возможность создавать и использовать модули различных типов).

4.2 Исследование и анализ рынка

Таблица 4.1 — Сегментация потенциальных пользователей

Сегментация рынка

Планируемый объем продаж по годам

20

20

20

1 кв.

2 кв.

3 кв.

4 кв.

1 п. /г.

2 п. /г.

год

Коммерческие организации

-

-

-

-

-

-

-

Государственные предприятия

-

-

-

-

-

-

-

Частные лица

0

5

7

5

5

12

17

Учебные заведения

20

5

3

5

25

8

33

Итого:

20

10

10

10

30

20

50

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

4.3 Производственный план

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

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

В структуру единовременных затрат на создание оригинала программы войдут только затраты на приобретение аппаратных средств и прикладных программ (таблица 4. 2).

Таблица 4.2 — Единовременные затраты

Наименование технических средств и ПО

Тип и модель

Стоимость, руб.

Компьютер

Intel Core DUO 2. 9гц DIMM SDRAM 1024Mb HDD 400Gb CD-RW Mitsumi DVD-48×512M6 nVidia GeForse 230GX

38 000 Руб.

1. 2

ОС

Windows 7

.

1. 3

Монитор

LG 19 Inch

.

1. 4

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

Visual C++

1100 Руб.

Итого:

47 700 Руб.

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

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

Статьи калькуляции:

1) Затраты на сырьё и материалы:

— затраты на основные материалы;

— затраты на вспомогательные материалы.

2)затраты на покупные комплектующие изделия, полуфабрикаты, работы и услуги предоставленного характера;

3) затраты на топливо и энергию для технологических целей:

— затраты на топливо для технологических целей;

— затраты на энергию для технологических целей.

4) основная заработная плата производственных рабочих:

— прямая заработная плата;

— доплаты по премиальным системам;

— доплаты по районному коэффициенту.

5) дополнительная заработная платы производственных рабочих;

6) отчисления на социальные нужды;

7) затраты на износ инструментов и приспособлений целевого назначения и прочие специальные расходы:

— затраты на специальные штампы.

8) Общепроизводственные затраты:

— расходы на содержание оборудования.

— цеховая себестоимость;

— общехозяйственные расходы;

— производственная себестоимость;

— коммерческие расходы;

— полная себестоимость.

4.4 Расчет текущих затрат на разработку программного продукта

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

— расходы на оплату труда персонала;

— расходы на функционирование проектируемого объекта;

— накладные расходы;

— другие расходы.

Расходы на оплату труда персонала включают:

— годовой фонд основной заработной платы персонала;

— годовой фонд дополнительной заработной платы.

Начисление на социальное страхование:

— социальное страхование на случай пенсионного обеспечения (31,8%);

— социальное страхование на случай временной потери трудоспособности (2,9%);

— социальное страхование по безработице (1,3%);

— социальное страхование от несчастных случаев и профессиональных заболеваний (условно принимается 2,0%).

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

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

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

Затраты на выплату процентов, капитализируемые в соответствии с Положением о стандартах учета, «Капитализация затрат на выплату процентов».

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

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

Таблица 4.3 — Оплата труда персонала

Категория персонала

Оплата труда за 1 час, руб.

Время, требуемое на разработку ПП, ч 40 час. = 1 неделя

Заработная плата, руб.

Инженер-программист

120

80

9600

Итого:

120

80

9600

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

Существуют различные подходы к классификации инвестиций в зависимости от классификационного признака:

1) По объекту инвестирования:

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

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

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

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

— по основным целям инвестирования:

— прямые инвестиции — те инвестиции, которые сделаны юридическими или физическими лицами, полностью владеющими предприятием или контролирующими не менее 10% акций или акционерного капитала предприятия;

— портфельные инвестиции — покупка акций, векселей и других долговых ценных бумаг. Они составляют менее 10% в общем акционерном капитале предприятия;

2) по срокам вложения:

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

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

3) по форме собственности на инвестиционные ресурсы:

— частные;

— государственные;

— иностранные — занимают особое место в мировой экономике;

— смешанные.

4) по региональному признаку инвестиции подразделяют на инвестиции за рубежом и инвестиции внутри страны;

5) по характеру участия различают непрямые (предполагается наличие посредника) и прямые инвестиции (прямое вложение средств в

материальный объект).

(4. 1)

где С — текущие затраты, руб.

Зпр — затраты на заработную плату персонала, руб.

Нз — начисления на заработную плату (Нз=26% от Зпр), руб.

Змаш — затраты, связанные с использованием машинного времени, руб. ;

Зс — затраты на оплату труда, выполненного другими организациями, руб. ;

Зн — накладные расходы (20% от зарплаты), руб.

Зкр — проценты за пользование кредитом, руб.

Начисления на зарплату рассчитываются по формуле 4. 2:

,(4. 2)

Затраты, связанные с использованием машинного времени определяются по формуле 4. 3:

Змаш = Тмаш * Смаш * Nк(4. 3)

где Тмаш — машинное время на разработку и отладку ПП, ч. ;

Смаш — стоимость одного часа машинного времени, Смаш = 3,08 кВт/ч. ;

Nк — мощность компьютера, Nк = 350 Вт. ;

Змаш = 120 * 3. 08 * 0. 36 = 129. 36 руб.

Так как затрат на оплату труда, выполненного другими организациями, не предусмотрено, то Зс=0.

Накладные расходы вычисляются по формуле 4. 4:

,(4. 4)

Таблица 4.4 — Потребности в инвестициях

Наименование статей затрат

Сумма

1 Единовременные затраты (Зк)

47 700

1.1 Капитальные вложения (К)

47 700

1.1.1 Затраты на приобретение ВТ (КВТ)

45 200

1.1.2 Затраты на приобретение ЛВС (Клвс)

-

1.1.3 Затраты на приобретение пакетов ПП и ОС (Кпп)

2500

2 Текущие затраты (С)

14 145. 36

2.1 Затраты на зарплату (3ПР)

9600

2.2 Начисления на заработную плату (Нз)

2496

2.3 Затраты связанные с использованием машинного времени

129. 36

2.4 Затраты на выполнение работ сторонними организациями (Зс)

-

2.5 Накладные расходы (Зн)

1920

Итого:

61 845. 36

4.5 Определение цены программного продукта

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

Себестоимость одной копии программного продукта определяется по формуле 4. 5:

(4. 5)

где N — объем продаж в натуральном выражении, штук;

С — текущие затраты, руб.

Полная себестоимость одной копии программного продукта определяется по формуле 4. 6:

(4. 6)

где Зтир — затраты на тиражирование, руб. ;

Зсер — затраты на сервисное обслуживание, руб.

Затраты на тиражирование составляют 2% от себестоимости программного продукта.

Затраты на сервисное обслуживание составляют 5% от себестоимости программного продукта. Так как программный продукт требует участия специалиста в установке и настройке программы.

Оптовая цена программного продукта определяется по формуле 4. 7:

Ц о = Сед + П, (4. 7)

где П — прибыль, руб.

Прибыль определяется исходя из предполагаемой рентабельности программного продукта по формуле 4. 8:

П = (Сед· Р)/100%, (4. 8)

где Р — процент нормативной рентабельности (Р =18%).

Цо = 63. 36 +316. 84 = 380.2 руб.

Цена программного продукта определяется по формуле 4. 9:

Цпр = Цо + НДС,(4. 9)

где НДС 18% от Сед.

НДС = 380.2 * 0,18 = 68. 34 руб.

Цпр = 380. 2+68.2 = 448. 63 руб.

Оптовая цена на программный продукт составит 380.2 рублей, себестоимость 282.9 рублей, плановая прибыль 63. 36 рублей, НДС 68. 34 рублей, цена 448. 63 рублей.

4.6 План маркетинговых действий

План состоит из пяти этапов:

— количественная оценка спроса и его прогноз;

— сегментация рынка;

— отбор целевых сегментов;

— позиционирование товара на рынке;

— анализ позиционирования конкурентных товаров.

Рисунок 4.1 — Факторы, влияющие на процесс управления маркетингом.

План состоит из этапов:

Этап 1. Количественная оценка спроса и его прогноз (оценка реальной и потенциальной емкости рынка и различных его сегментов).

Данный этап является ключевым для всего маркетингового процесса — это постановка маркетинговых целей. Маркетинговые цели касаются в основном только двух аспектов — продуктов и рынков:

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

Маркетинговое исследование спроса представлена на рисунке 4.2.

Рисунок 4.2 — Уровни измерения рыночного спроса.

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

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

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

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

— освоенный рынок — совокупность покупателей, которые уже приобрели определенный товар или услугу (рисунок 4. 3).

Рисунок 4.3 — Уровни анализа рынка

Этап 2. Сегментация рынка.

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

Потребителей объединяют в группы по различным признакам:

— географическим (страна, регион, город);

— демографическим (пол, возраст, уровень доходов, образование);

— психографическим (общественный класс, образ жизни);

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

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

4.7 Товарная политика

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

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

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

Существует три основных вида товарной политики:

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

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

— конгломератная товарная политика. Предприятие постоянно осваивает новые товары, ведет отработку новых технологий и поиск новых рынков сбыта;

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

Жизненный цикл имеет стадии:

— внедрение;

— рост;

— зрелость (относительное насыщение рынка);

— спад.

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

Товарная политика предприятия всегда направлена на реализацию общей экономической стратегии и характеризуется следующими направлениями:

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

ПоказатьСвернуть
Заполнить форму текущей работой