C++面向对象大作业实验报告
(1)问题描述
项目选题为做一个飞行射击
游戏。游戏中有各总各样的敌机和武器,敌机按一定的几率出现,玩家消灭敌机后可得分数奖励,达到一定分数后会升级,游戏难度随着玩家级数的增加而增大。游戏有很多爆炸场面,增加了刺激性。
(2)系统设计
GameWorld类http://www.16sheji8.cn/
描述:控制整个游戏过程的类
主要数据成员:
(A) 静态数据成员
const int Width, Height; // 游戏区域的宽和高
const double PI; // 圆周率
(B) 对象指针
Display *pScreen; // 屏幕
Player *pPlayer; // 玩家
BulletSystem *pPlayerBulletSystem, // 玩家子弹系统
*pEnermyBulletSystem; // 敌方子弹系统
EnermySystem *pEnermySystem; // 敌机系统
CollisionSystem *pCollisionSystem; // 碰撞系统
主要成员函数:
GameWorld( HWND); // 构造函数
void ShowInfomation() // 显示屏幕信息
void Update(); // 游戏状态更新
void KeyDown(WPARAM KeyCode); // 处理按键http://www.16sheji8.cn/
void KeyUp(WPARAM KeyCode); // 按键释放
void EnermyFire(Enermy *pEnermy); // 敌人发射子弹
void PlayerFire(Player *pPlayer); // 玩家发射子弹
void ResetPlayer(); // 重置玩家角色
void DrawSprite(Sprite *pSprite); // 在屏幕上输出角色
Display类
描述: 实现游戏画面输出的类
主要成员函数:
Display(GameWorld*); // 构造函数
void SetClientSize(HWND hwnd, int Width, int Height)
// 设置窗口客户区大小
void Clear() // 清除画面
void DrawToOffscreen(int
x, int y, int w, int h,
int sx, int sy, bool bTransparent)
// 把图形绘制到缓冲画面中
void DrawAllToScreen() // 把缓冲画面输出到屏幕
HDC GetOffscreenDC() // 返回内存设备场景句柄
Bitmap类
描述: 封装位图文件的类http://www.16sheji8.cn/
主要成员函数:
Bitmap(char *fn, BOOL transmode=false,
COLORREF transcolor=RGB(255, 0, 255)):
// 构造函数
void CreateMask(); // 为实现背景色透明创建图像掩码
void Load(char *fn) // 载入图像文件
void Draw(HDC ddc, int dx=0, int dy=0,
int dw=0, int dh=0, int sx=0, int sy=0);
// 输出到设备场景上
BulletSystem类
描述: 管理子弹的类
主要数据成员:
list<Bullet*> BulletList; // 子弹列表
list<Bullet*>::iterator pCurElement;// 当前子弹
int BulletIndex, /
/ 当前子弹索引
BulletCount; // 列表中的子弹总数
主要成员函数:
BulletSystem(GameWorld *pgw);
void FireHappened(Bullet::BULLET_TYPE BulletType,
int x, int y, double sprite_vx, double sprite_vy);
// 处理发射子弹的事件
Bullet* GetFirstBullet(); // 返回第一个子弹对象
Bullet* GetNextBullet(); // 返回下一个子弹对象
void Update(); // 刷新所有子弹http://www.16sheji8.cn/