Автор работы: Пользователь скрыл имя, 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. Заключение
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()
{
}
#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;
}
При написании данной программы
был использован объектно-
Соблюдение этих требований позволяет
разрабатывать чётко
Таким образом, объектно-ориентированный подход в программировании является на данный момент мощным инструментом по созданию сложных, высококачественных программ.
Информация о работе Объектно ориентированное программирование. Простая игра