Объектно ориентированное программирование. Простая игра

Автор работы: Пользователь скрыл имя, 24 Февраля 2013 в 05:40, курсовая работа

Описание

В качестве курсовой работы по объектно-ориентированному программированию было предложено написать простую игру. Основные требования к программе:
1. Наличие не менее десяти различных классов
2. Наличие различных типов связей между классами – наследование, агрегация и т.д.
3. Взаимодействие между классами в реальном времени.

Содержание

1. Постановка задачи 4
2. Список классов 5
2.1 Класс Object 5
2.2 Класс ObjectList 5
2.3 Класс Game 5
2.4 Класс Player 5
2.5 Класс Enemy 5
2.6 Класс Boss 5
2.7 Класс Bullet 5
2.8 Класс Sp_Bull 5
2.9 Класс Explosion 5
2.10 Класс Life 5
2.11 Класс Defense 6
3. Диаграмма классов 7
4. Описание классов. 8
4.1 Класс Object 8
4.1.1 Атрибуты класса 8
4.1.2 Методы класса 8
4.2 Класс ObjectList. 9
4.2.1 Атрибуты класса 9
4.2.2 Методы класса 9
4.3 Класс Game 9
4.3.1 Атрибуты класса 10
4.3.2 Методы класса 10
4.4 Класс Player 10
4.4.1 Атрибуты класса 10
4.4.2 Методы класса 11
4.5 Класс Enemy 11
4.5.1 Атрибуты класса 11
4.5.2 Методы класса 11
4.6 Класс Boss 11
4.6.1 Атрибуты класса 11
4.6.2 Методы класса 12
4.7 Класс Bullet 12
4.7.1 Атрибуты класса 12
4.7.2 Методы класса 12
4.8 Класс Sp_Bull 12
4.8.1 Атрибуты класса 12
4.8.2 Методы класса 12
4.9 Класс Explosion 13
4.9.1 Атрибуты класса 13
4.9.2 Методы класса 13
4.10 Класс Life 13
4.10.1 Атрибуты класса 13
4.10.2 Методы класса 13
4.11 Класс Defense 13
4.11.1 Атрибуты класса 13
4.11.2 Методы класса 14
5. Программная реализация классов 15
5.1 Реализация абстрактного класса Object. 15
5.2 Реализация класса ObjectList 15
5.3 Реализация класса Game 17
5.4 Реализация класса Player 18
5.5 Реализация класса Enemy 20
5.6 Реализация класса Boss 22
6. Основной модуль
7. Заключение

Работа состоит из  1 файл

КУРСОВАЯ.doc

— 526.00 Кб (Скачать документ)

return;

if(Collision(pObject) && (pObject->GetType() != OBJECTTYPE_EXPLOSION) && (pObject->GetType() != OBJECTTYPE_BULLET))

{

switch(pObject->GetType())

{

//противник и  игрок при столкновении перестают продвигаться вперед

case OBJECTTYPE_ENEMY:

{

pObject->box.x-=pObject->xVel;

pObject->box.y-=pObject->yVel;

}

break;

case OBJECTTYPE_PLAYER:

{

pObject->box.x-=pObject->xVel;

pObject->box.y-=pObject->yVel;

pGame->MoveCam(-pObject->yVel);

}

break;

default:

break;

}

return;

}

return;

}

 

bool Defence::Move()

{

if(bDie) return false;

return true;

}

 

Defence::~Defence()

{

}

 

6. Основной модуль

#include "stdafx.h"

//функция, заполняющая уровень объектами

void Create(Game* g, ObjectList* l, Player* p)

{

l->AddObject(p);

Boss *b=new Boss(g, l, 320, -450, 4, 2);

for(int x=0; x < 4; x++)

{

Enemy* e = new Enemy(g, l, 64*x+10*x, 10+10*x);

l->AddObject(e);

}

l->AddObject(b);   

for(int x=0; x<4; x++)

{

Defence *d=new Defence(g, l, 320+32*x, 240);

l->AddObject(d);

}

Life *li=new Life(g,l,354, 242, 2); 

l->AddObject(li);

for(int x=0; x<4; x++)

{

Defence *d=new Defence(g, l, 100+32*x, -240+32*x);

l->AddObject(d);

}

li=new Life(g,l,134,-208, 1);

l->AddObject(li);

}

int _tmain(int argc, _TCHAR* argv[])

Game* g=new Game;

ObjectList* l=new ObjectList(g);

Player *p=new Player(g, l);

Create(g,l,p);

bool quit = false;

l->BlitObjects();

while( quit == false )

{

while( SDL_PollEvent( &(g->event) ) )

{

//обработка событий  клавиатуры

p->handle_input();         

if( g->event.type == SDL_QUIT )

quit = true;   

}

//просчёт взаимодействия между объектами

l->ProcessObjects();

//прорисовка объектов

l->BlitObjects();

//прорисовка жизней

g->DrawStatus();

//прорисовка аммуниции

p->Show_Am();

//обновление экрана

g->FlipScreen();

}

SDL_Delay(1000);

delete l;

return 0;

}

7. Заключение

При написании данной программы  был использован объектно-ориентированный  подход в программировании. Для объектно-ориентированного подхода концептуальная база - это объектная модель. Она имеет четыре главных элемента:

    1. абстрагирование;
    2. инкапсуляция;
    3. модульность;
    4. иерархия.

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

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

 


Информация о работе Объектно ориентированное программирование. Простая игра