飞机大战游戏设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计综合实践报告

姓名学号

班级项目名称

飞机大战游戏设计与实现

实习地点计算机实验室

实习时间

2015-12-9至2015-12

-19

实习成绩指导教师签字

信息科学与工程学院

2015年12月20日

目录

1. 概述ﻩ错误!未定义书签。

1.1 关卡设置ﻩ错误!未定义书签。

1.2 敌机设置.......................... 错误!未定义书签。

1.3 战机设置......................... 错误!未定义书签。

1.4 游戏设置.......................... 错误!未定义书签。2. 相关技术............................ 错误!未定义书签。

2.1 Windows定时器技术 (2)

2.2 双缓冲技术ﻩ错误!未定义书签。

2.3 获取矩形区域ﻩ2

3. 总体设计与详细设计ﻩ错误!未定义书签。

3.1 系统模块划分..................... 错误!未定义书签。

3.2 主要功能模块...................... 错误!未定义书签。

4. 编码实现ﻩ4

4.1 初始准备ﻩ4

4.2 战机对象ﻩ6

4.3敌机对象......................... 错误!未定义书签。

4.4 道具对象 (9)

4.5 主要内容ﻩ01

4.6 窗口显示信息...................... 错误!未定义书签。

5. 实训中遇到的主要问题及解决方法ﻩ20

5.1 产生中断及解决方案ﻩ02

5.2 图片闪烁问题及解决方案ﻩ20

6. 实训体会............................. 错误!未定义书签。

1.概述

项目:飞机大战

主要功能有以下几点:

1.1 关卡设置

本次飞机大战游戏中共设置了四个关卡,第一关的难度设置较低,仅有敌机对其进行攻击;第二关在原有的基础上增加一些补血的小道具,当积分达到一定的时候便会出现该道具,并且敌机出现的频率也比第一关高;第三关在第二关的基础上新出现了小boss,并增加了其他的道具;第四关在第三关的基础上再新出现大boss,当积分达到要求以及大boss被消灭后通关成功。

1.2敌机设置

小敌机随机出现,炮弹也随机发射,当小敌机与战机相撞或被战机的子弹击中时,小敌机消失。当达到一定积分时,小boss出现并随机发射出与小敌机一样的炮弹,但是炮弹分三个方向发射出。当小boss被战机的子弹击中或与战机相撞时失去5滴血。当到达四关并且积分足够多时出现大boss,同小boss一样,当大boss与战机相撞或被战机子弹击中时失去1滴血。除此之外,小boss和大boss上方都有血条显示,当血条消失时意味着生命消失,大boss和小boss消失。小boss会在屏幕上随机出现和走动出了屏幕后会在屏幕的任意地方再随机出现,直至血量为0消失。大boss则在屏幕中随机走动不出屏幕,直至血量为0消失。

1.3 战机设置

战机初始有五条生命,每条命的血量为50,所获得的积分以及其生命值、血条都在窗口的左上角显示。在第一、二关时,按空格键战机会出现两个向上发射的炮弹,到第三、四关的时候,按空格键战机会发射三个不同方向的炮弹。战机吃到药瓶道具时血量会增加20,但不可以超过50;吃到闪电道具时,便可放大招,放大招的次数为15。当战机被敌方的炮弹击中或与敌方相撞时,血量减少,减少为0时生命值减1,直至生命值为0。

1.4游戏设置

进入游戏时,会有背景音乐,窗口左上角显示战机所得积分及其生命值。根据积分情况进入不同的关卡。游戏通关时屏幕清空,并显示通关成功,按Y可重新开始游戏。当战机的血量以及生命值为0时,游戏失败,屏幕清空并显示游戏结束,按Y即可重新开始游戏。

2. 相关技术

2.1Windows定时器技术

Windows定时器是一种输入设备,它周期性地在每经过一个指定的时间间隔后就通知应用程序一次。程序将时间间隔告诉windows,然后windows给你的程序发送周期性发生的WM_YIMER消息以表示时间到了。本程序在OnCreate()函数中使用了编号为1的定时器,控制了每30毫秒刷新一次。

2.2双缓冲技术

在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样即可解决图片闪烁问题。本程序在绘制滚动背景以及飞机,敌机等中用到了该技术。

2.3获取矩形区域

用CRect定义一个对象,利用这个对象得到要用到的矩形区域,用IntersectRect函数来判断两个源矩形是不是有重合的部分。

3. 总体设计与详细设计

3.1系统模块划分

飞机大战游戏主要模块可以说是有几个重要的类组成的。首先是老师给出的CGameObject类,以及在其派生下的Bomb,Ball,Enemy,MyPlane,Explosion,AddBlood 等等此处不一一列举。另外还有CObject派生的BackGround类。

如下图:

3.2 主要功能模块

主要功能是在飞机大战View类中,OnTimer函数中实现,将各个类调用,随机产生敌机,子弹的输出,爆炸的实现等等。它的实现图可以如下实现:

启动程序

初始化游戏对象

游戏初始化

初始化绘图环境

游戏是否结束

绘制游戏对象碰撞运算积分判断

本程序所包含的功能和类模块:

游戏子系统

模块名称功能简述

应用程序对象游戏程序的加载、游戏对象的绘制、玩家的键盘事件获取

游戏对象各个游戏对象的抽象父类(CGameObject)

战机对象战机类(MyPlane)

敌机对象敌机类(Enemy, LittleBoss,Boss)

相关文档
最新文档