Проектирование и реализация компьютерной игры
Министерство образования и науки Украины
Донецкий национальный технический университет
Кафедра
КСМ
На курсовую работу по дисциплине
«Объектно-
Тема: Проектирование и реализация компьютерной игры
Разработала___________________
Руководитель
работы________________________
|
Пояснительная записка к курсовой работе содержит 46 страниц, 9 рисунков, 3 таблицы,6 диаграмм и 4 приложения. Целью данной курсовой работы является получение теоретических и практических навыков проектирования, а так же реализация компьютерной игры средствами объектно-ориентированного программирования. Объектом разработки данной курсовой работы является компьютерная игра, написанная на языке программирования С++ в среде MS DOS. В данном проекте были разработаны и реализованы алгоритмы объектно-ориентированного программирования и взаимодействия классов. Результатом
данной курсовой работы является созданная
компьютерная игра, которая может
быть использована в игровых и
развлекательных целях, а так
же может являться обучающим примером
программы, разработанной средствами
объектно-ориентированного программирования. ДИАГРАММА,
ОБЪЕКТ, ООП, КЛАССЫ, МЕТОДЫ, СВОЙСТВА КЛАССОВ. | ||||||||||||
| //7.080407.45.09.862 | ||||||||||||
| Реферат |
Ли- | Мас- | Мас- | |||||||||
| Изм | Лист | № Документа | Подпись | Дата | ||||||||
| Разраб. | Вереитина Д.А. | |||||||||||
| Пров. | Павлий В.А. | |||||||||||
| Т.контр | Михайлова Т.В. | Лист | Листов | |||||||||
| ДонНТУ,
каф. КСМ
КЭМ - 08 | ||||||||||||
Введение
1 Постановка задачи
2 Объектно-ориентированный анализ и проектирование
2.1
Объектно-ориентированный
2.2
Объектно-ориентированное
2.2.1 Диаграммы классов
2.2.2 Диаграммы объектов
2.2.3 Диаграммы прецедентов
2.2.4 Диаграммы состояний
3 Рабочее проектирование
3.1 Структуры данных приложения
3.2 Разработка классов
3.3
Тестирование
3.4 Обоснование выбора структур данных
3.5 Обоснование выбора алгоритмов
Выводы
Перечень ссылок
Приложение А. Техническое задание
Приложение Б. Описание программы
Приложение В. Руководство программиста
Приложение Г. Руководство оператора
Приложение
Д. Текст программы
ВВЕДЕНИЕ
Темой данной курсовой работы является разработка и реализация компьютерной игры.
Первые примитивные компьютерные и видеоигры были разработаны в 1950-х и 1960-х годах. Они работали на таких платформах, как осциллографы, университетские мейнфреймы и компьютеры EDSAC. Самой первой компьютерной игрой стал симулятор ракеты, созданный в 1942 году Томасом Голдсмитом Младшим и Истл Рей Менном.
По определению, которое сложилось к данному моменту времени, компьютерная игра — компьютерная программа, служащая для организации игрового процесса, связи с партнёрами по игре, или сама выступающая в качестве партнёра.
В рамках курса изучения языка процедурного и объектно-ориентированного программирования, данная задача является как развивающей и интересной для программиста, так наиболее требовательной к уровню владения принципами ООП, то есть методами наследования, полиморфизма, инкапсуляции и типизации.
Разработанное
приложение функционирует в среде
MS DOS, но имеет графический интерфейс диалога
с пользователем, который был реализован
с помощью соответствующих графических
библиотек и функций.
Реализация игры в среде MS DOS на языке С++. Должно быть разработано объектно-ориентированное проектирование (с использованием UML) и программное обеспечение с использованием принципов ООП, с анимацией изображения экземпляра класса.
Описание игры:
Данная
игра является 2d аркадой. В начале игры
пользователь видит на экране заставку.
Далее при нажатии клавиши «Enter» он переходит
в пункты Меню, где выбирает необходимые
для него операции в данный момент. В наличие
Меню всего три пункта операций. Первый
является входом в игру.
Второй описывает правила игры. Третий
является выходом о информация о которых
поясняется ниже. Выбрав пункт Меню
«New game» пользователь может начать игру,
принцип которой состоит в следующем:
главный персонаж игры «Waka-Waka», которым
руководит пользователь, в процессе поедает
различные объекты наподобие пищи, при
этом набирая определенное количество
калорий. То есть как только персонаж подходит
близко к еде, он набирает калории .Эти
объекты (пища) имеет разные цвета, каждому
из которых соответствует определенное
количество калорий. Если объект«Waka-Waka»
в процессе питания съедает более 1000 калорий
, то персонаж погибает от «ожирения».При
этом на экране появляется сообщение о
проигрыше. Однако, если персонаж успевает
зайти в спорт зал, то все калории обнуляются
и «Waka-Waka» вновь может начать набор
калорий.
2 ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ
АНАЛИЗ И ПРОЕКТИРОВАНИЕ
2.1
Объектно-ориентированный анализ
В результате фазы анализа определяется, что должна делать система. В игре присутствуют 4 класса.
Первый класс – game. В этом классе созданы методы, с помощью которых происходит инициализация графического режима и прорисовка заставки, меню.
Второй класс – food. Предназначен для создания пищи, которую будет поедать персонаж. В этом классе созданы методы, реализующие инициализацию, прорисовку, удаления, изменение положения объкта. Класс food включает в себя такие свойства как x,y-координаты центра объектов;dx,dy-радиусы объектов;point- количество очков,набранные при пересечении радиуса объекта waka waka и объектов класса food;val- переменная,которая хранит в себе набор цветов от1 до7.
Третий класс – man. В этом классе созданы методы, с помощью который происходит прорисовка, перемещение, отслеживание положения главного персонажа. Класс man включает в себя такие свойства как x,y-координаты центра главного персонажа;dx,dy-радиусы главного персонажа; kkal-количество каллорий, набранные главным персонажем; direct-направление движение главного персонажа;arrow, arrow2-переменные,под которые выделяется память.
Четвертый класс – sportzal. В данном классе
реализован метод, который необходим для
прорисовки спортзала.
2.2 Объектно-ориентированное проектирование
UML— язык графического описания для объектного моделирования в области разработки программного обеспечения.
В результате проектирования определяется, как система должна быть построена, чтобы выполнять то, что необходимо.
Выполним различные этапы процесса объектно-ориентированного проектирования для данной задачи. Для этого воспользуемся диаграммами UML.
2.2.1 Диаграммы классов
Для
реализации необходимых возможностей
игры были созданы четыре класса, диаграммы
которых, представлены на рисунке 2.1.
Рисунок
2.1. Диаграмма классов
2.2.2
Диаграммы объектов
В
игре используется массив f[N] из 10 объектов
класса food, объекты классов game, man, sportzal.
Связь этих объектов представлена на рисунке
2.2.
Рисунок
2.2. Диаграмма объектов
2.2.3
Диаграммы прецедентов
UML предоставляет диаграммы прецедентов (или вариантов использования), чтобы сделать более легким процесс сбора требований. Диаграмма прецедентов моделирует взаимодействие между внешними клиентами системы и прецедентами системы. Каждый прецедент представляет собой определенную возможность, которую система обеспечивает клиенту. По стандарту UML каждый прецедент представляется овалом.
На
рисунке 2.3 показана диаграмма прецедентов
для системы меню, а на рисунке 2.4 – диаграмма
прецедентов для системы игрового процесса.
Рисунок 2.3. Диаграмма прецедентов для системы меню
Выбор
пользователем пункта меню New game означает
переход в основную часть программного
кода - игровой цикл. Выбор пользователем
пункта меню About означает вход и возможность
ознакомления с правилами игры. Выбор
пользователем пункта меню Exit означает
выход из меню.
Рисунок 2.4. Диаграмма прецедентов для системы перемещения персонажа
Данная
диаграмма описывает принцип
перемещения главного персонажа.
А именно при нажатии пользователем
клавиши «Влево» персонаж перемещается
влево, клавиши «Вправо»- вправо, «Вверх»
- вверх, «Вниз»- «вниз».Но если нажата
клавиша «Есs»,то происходит процесс выхода
из игры
2.2.4
Диаграммы состояний
Диаграммы состояний (statechart diagrams или state diagrams) дают способ выразить, как и при каких условиях объекты в системе меняют состояние.
Диаграмма
состояний меню представлены на рисунке
2.5 и диаграмма состояний игрового процесса
на рисунке 2.6
Рисунок 2.5. Диаграмма состояний меню
Диаграмма описывается следующим образом : при запуске функции меню происходит прорисовка пунктов меню. Далее следует проверка- нажата ли какая либо кнопка на клавиатуре, если нет, то возвращаемся обратно в проверку, если да, то происходит переход к следующей проверке- нажата ли клавиша Enter, если да, то начинает своё действие один из пунктов меню, если нажата иная клавиша, то происходит процесс ожидания нажатия клавши – вверх или вниз, при этом переключаются пункты меню и происходит возврат в основной цикл.
Рисунок 2.5. Диаграмма состояний игрового процесса
Данная диаграмма характеризуется следующим образом – после запуска игры происходит ожидание нажатия клавиши, если нажата клавиша Esc, то происходит выход из игры, если нажаты клавиши вверх, вниз, вправо или влево, то основной персонаж производит действие перемещения. Далее в алгоритме происходит проверка – совпадают ли координаты персонажа и пищи, таким образом происходит переход в следующую проверку на количество набранных калорий, если предел калорий не достигнут, то персонаж продолжает своё перемещение и питание, если достигнут предел, то-
Очистка экрана и сообщение об окончании игры.
3.1
Структуры данных приложения
В разрабатываемой игре были созданы следующие экземпляры –объекты классов:
- f[N] – массив объектов типа food, данный массив хранит информацию о пище, которую будет поедать главный перcонаж;
- g – объект типа game, данный объект является наиболее важных, так как с его помощью реализуется интерфейс заставок, меню и контролируется игровой процесс;
- m(3,44) – объект типа man, хранит информацию о персонаже, контролирует процесс перемещения по экрану
- s – объект типа sportzal, используется для отображения спортзала на экране.
3.2
Разработка классов
Рассмотрим основные методы и поля класса game и их функции в программе:
- void zastavka() – публичный метод, реализует заставку при запуске игры;
- int opt(int mode) – публичный метод, используется для определения ключа mode выбираемого пункта меню;
- void menu() – публичный метод, который необходим для создания главного меню программы.
Рассмотрим основные методы и поля класса food и их функции в программе:
- int x,y,dx,dy,points,val – приватные переменные, которые необходимы для задания параметров объектов - пищи;
- food() – публичный конструктор, который инициализирует основные переменные в классе;
- void new_food() – публичный метод, который управляет процессом создания новых объектов-пищи;
- void zarisovkaf() – публичный метод, необходимый для прорисовки пищи на экране.
Рассмотрим основные методы и поля класса man и их функции в программе:
- int size, void *arrow, void *arrow2 – приватные поля, которые необходимы для реализации перемещения главного персонажа по экрану;
- int x,y,dx,dy,direct,kkal – публичные поля, необходимые для задания параметров прорисовки персонажа, направления его движения и количества набранных им калорий;
- void zarisovkam() – публичный метод, прорисовка персонажа на экране;
- void moveright(),moveleft(),moveup(
),movedown() – публичные методы, которые реализуют перемещение персонажа в разлиных направлениях; - void work() – публичный метод, контролирующий весь игровой процесс;
- man(int x,int y) – публичный конструктор.
Рассмотрим основные методы и поля класса sportzal и их функции в программе:
- void zarisovkas() – публичный метод, реализующий прорисовку спортзала на экране.
3.3
Тестирование
Протестируем разные состояния игры:
- Запускаем игру, появляется заставка (рисунок 3. 1), что говорит о корректной инициализации графического режима и создания экземпляра класса zastavka, с последеющей прорисовкой.
Рисунок
3.1. Запуск приложения
- Ожидаем некоторое время, анимация продолжается (рисунок 3.2) некоторое время.
Рисунок
3.2. Анимация
- Нажимаем
любую кнопку (рисунок 3.3). Заставка
завершается и открывается
главное меню приложения.
Рисунок
3.3. Анимация
- Нажимая клавиши «Вверх» / «Вниз» протестируем работу меню (рисунки 3.4-3.5). Класс menu реализован правильно, о чем говорит корректная работа переключения пунктов меню.
Рисунок
3.4. Работа главного меню
Рисунок
3.5. Работа главного меню
- Далее запустим игровой процесс выбрав пункт меню “NEW GAME” и нажмем Enter. Произошел запуск игры (рисунок 3.6).
Рисунок
3.6. Запуск игры
- Инициализация экземпляров классов man, food, sportzal произошла корректно, о чем свидетельствует соответсвующие прорисованные объекты. Протестируем перемещение персонажа, поедания пищи, создание нового объекта, с другими параметрами на месте съеденного (рисунки 3.7-3.8).
Рисунок 3.7. Тест игрового процесса
Рисунок
3.8. Тест игрового процесса
- Все методы работают корректно. При наборе определенного количества калорий игровой процесс завершается и отображается финальная заставка «GAME OVER» (рисунок 3.9). Закрытие графического режима и выход из программы.
Рисунок
3.9. Финальная застака
Тест
завершен, все тестируемые функции,
описанные в соответствующих
классах работают правильно.
3.4
Обоснование выбора структур данных
В
данной программе реализованы четыре
класса, которые управляют всеми аспектами
игровой системы на каждом шаге. Классы
не связаны наследованием, так как являются
разнородными и используются для различных
целей, которые невозможно объединить
в единый класс, наследующий все остальные.
3.5
Обоснование выбора алгоритмов
Далее приводятся некоторые алгоритмы в виде блок схемы, разработанные при создании данной программы. На рисунках 3.10-3.14 представлена блок-схема работы метода первой сцены-заставки zastavka(), а на рисунках 3.15 – 3.18 работы метода меню menu().
Рисунок 3.10. Блок-схема работы первой сцены-заставки
Рисунок 3.11. Блок-схема работы метода первой сцены-заставки
Рисунок 3.12. Блок-схема работы метода первой сцены-заставки
Рисунок 3.13. Блок-схема
работы метода первой сцены-заставки
Рисунок 3.14. Блок-схема работы метода первой сцены-заставки
Рисунок 3.16. Блок-схема работы
Рисунок 3.17. Блок-схема работы меню
Рисунок
3.18. Блок-схема работы меню
ВЫВОДЫ
В данной работе продемонстрирована реализация классов на примере игры. Достоинством этой программы является простота управления основным объектом , минимальные системные требования, и достаточно интересная реализация графики с использованием графических примитивов, предоставляемых языком программирования Turbo C++.
Но
так же существует много возможных
направлений для дальнейшей работы. Можно
предложить следующие варианты: добавление
дополнительных сложностей игры, переход
на новые уровни, таймер, звуковое сопровождение
и прочее.
ПЕРЕЧЕНЬ
ССЫЛОК
- Липпман. С++ для начинающих. Л:. «Вильямс»,2007г.,320 с.
- Марченко
А.Л.С++. Бархатный путь. М:.«ГорячаяЛиния–Телеком»,
2005г.,560с. - Керниган Б. В., Ричи Д. М. Язык С. М:. «Вильямс»,2003г., 444 с.
- Семенидо Д. Программирование на С++ для DOS и Windows, или как заставить компьютер делать то, что Вы хотите. X:. «Свет», 2005г.,220 с.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ
ДОНЕЦКИЙ НАЦИОНАЛЬНЫЙ
КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ
И ИНФОРМАТИКИ
ТЕХНИЧЕСКОЕ ЗАВДАНИЕ
на курсовую работу по дисциплине
«Объектно-
Студенту
гр. КЭМ – 08 Вереитиной Д.А
Тема: Проектирование и реализация компьютерной игры
«Waka
Waka»
Задание
Сценарий.
Необходимо перемещать клавишами вверх, вниз, вправо, влево главного персонажа «Waka Waka» таким образом, чтобы он подходил на минимальное расстояние к объектам «пища».При выполнении этого условия «пища будет съедаться», а «Waka Waka» набирать калории. Как только главный персонаж набирает более 1000 калорий, то игра окончена, а если он успевает подойти к спортзалу, то все калории обнуляются и герой вновь может набирать калории.
Требования к программному изделию
Должно
быть разработано объектно-
Курсовая работа должна быть выполнена на языке Си++ в операционной системе MS-DOS.
Требования к программной документации