太空战机实验报告
1.实验截图
图一开始游戏
图二我方战机敌方战机出现。敌方战机随机发射子弹并上下浮动背景音乐响起。
图三射杀战机积分增加。敌机与子弹碰撞消失。
图四被敌机射杀血量减少为0
2.游戏功能
游戏规则
1. 按下空格键游戏开始。
2. 通过WSA 键控制玩家飞机移动上下左右移动但不能飞出边境。
3. 当玩家按下空格键时玩家飞机发射子弹。
4. 玩家飞机被敌机碰到后生命值会减少生命值变为 0的时候游戏结束。
5. 在游戏右方会一直出现电脑飞机敌机 敌机分为超大、大、中、小四种类型越大的飞机出现的几率越小。
6. 敌机被玩家飞机击中后生命值会减少生命值变为 0时该敌
机被摧毁玩家得分。越大的飞机越难击毁击毁后玩家得分也越多。
7. 敌机飞到界面左方时删除敌机。
8. 敌方飞机的子弹分为两种一种为普通子弹另一种子弹为高级子
弹 当敌方飞机的普通子弹与玩家飞机的子弹碰撞时相互抵消
敌方飞机的高级子弹不会与玩家飞机的子弹抵消
9. 在界面外用一个文本显示玩家游戏得分。
3.流程图
4.数据结构
创建5个继承类我方战机类CMyFighter、子弹类CBullet、敌方战机类CEnemyFighter类、链表类CSpriteList、精灵父类CGameSprite。
1.我方战机类CMyFi ghter:m_fVelocityLeft; //控制飞机飞行的速度上下左右。m_fVel o c ityRi ght;m_fVel ocityUp;m_fVelocityDow n;
m_bCa nFire; //表示判断是否开火
2.子弹类CBullet:
; //表
示该子弹是谁发射的变量
3.敌方战机类CEnemyFi ghter:
m」 CreatedSpriteCou nt;/表示创建战
机数量m_fCa nFireAfterCreated; 〃
判断敌机创建后能否开火
m_fFloatTime;m_bFloatUp;
4.战机飞行时是上浮还是下浮struct SpriteStruct
;
CSprite*pSprite;
Sprite Struc t*pNe xt;
SpriteStruct*pPrev;
};
SpriteStruc t*
CSprite*
5.精灵父类CGameSpritevirtual~CGameSprite();
//ge t方法
6」 essen.x类:m」 Ga me S tate; //游戏状态0:结束或者等待开始1:
初始化2游戏进行中.
CSprite*; 〃战机类
指针float m」 CreatedSpriteCou nt; 〃创造精灵数量
CSpriteList; //链表类精灵
CSpriteList diji; II链表类敌机
CEffect*di; 〃特效类精灵
5.算法描述
在外星球上玩家通过键盘WS AD键控制己方战机通过空格键发射子弹消灭外星球的邪恶战机。
游戏状态m」 Ga me S tate分为三种状态0, 1 2,其中0表示游戏结束状态 1表示游戏初始化 2则表示游戏运行状态
0 1的转换为“空格开始”初始化函数为Gamelnit函数
播放背景音乐。
1 2的转换自然发生 即游戏初始化函数后会自动将游戏状态从1置为2
2表示游戏运行状态在该状态敲击空格发射子弹消灭敌机消灭敌机分数增加被敌机打中自身的血量减少。
2 0的转换是游戏结束。
CGameMain::CGameMain()构造函数
完成初始化工作
初始化状态为0
设置开始按钮
我方战机初始化为空
创造精灵数量初始化为0
CGameMain::GameMainLoop(float fDeltaTime)
游戏的主循环根据游戏的状态切换逻辑
1、 当当游戏状态为0时主循环一直循环但不做处理而是等待空格键按下开始游戏。调用背景音乐。
2、 当游戏状态为1时调用Gamelnit()方法初始化游戏然后置游戏状态为2。当游戏状态为2时调用GameRun(fDeltaTi me)方法在CGame Main类的GameRun方法中遍历链接中的每个节点获得所有敌方战机的节点让战机执行LoopTick方法 实现战机发射子弹和上下浮动。
3、游戏结束时会执行GameEnd且置状态为0
CGameMain::Gamelnit()
完成对各种精灵的初始化
1.播放放在bin中的游戏背景音乐。
2初始化我方战机为战机类指针”Co ntrolSprite”设计我方战机的世界边界限制。3•初始化分数为0.
4.初始化血量为100.
CGameMain::GameRun(floatfDeltaTime)
对于游戏进行的设置
1.如果是我的战机我方战机初始化
2.敌方战机引用函数CEnemyFighter: :ClassTick(fDeltaTime)进行引用。
3.当游戏状态为2时调用GameRun(fDeltaTi me)方法在
CGame Main类的Game Run方法中遍历链接中的每个节点获得所有敌方
战机的节点让战机执行 LoopTick方法实现战机发
射子弹和上下浮动。
CGameMain::OnKeyDown(constintiKey,constboolbAltPress,constboolbShiftPress,constboolbCtrlPress)
游戏开始和控制按钮
1、 如果空格按下时游戏未开始 即游戏状态为0,则将游戏状态改为
1 运行游戏初始化函数(GameInit)。隐藏文字精灵“开始游戏”
速云怎么样?速云,国人商家,提供广州移动、深圳移动、广州茂名联通、香港hkt等VDS和独立服务器。现在暑期限时特惠,力度大。广州移动/深圳移动/广东联通/香港HKT等9折优惠,最低月付9元;暑期特惠,带宽、流量翻倍,深港mplc免费试用!点击进入:速云官方网站地址速云优惠码:全场9折优惠码:summer速云优惠活动:活动期间,所有地区所有配置可享受9折优惠,深圳/广州地区流量计费VDS可选择流量翻...
我们对于BlueHost主机商还是比较熟悉的,早年我们还是全民使用虚拟主机的时候,大部分的外贸主机都会用到BlueHost无限虚拟主机方案,那时候他们商家只有一款虚拟主机方案。目前,商家国际款和国内款是有差异营销的,BlueHost国内有提供香港、美国、印度和欧洲机房。包括有提供虚拟主机、VPS和独立服务器。现在,BlueHost 商家周年活动,全场五折优惠。我们看看这次的活动有哪些值得选择的。 ...
使用此源码可以生成QQ自动跳转到浏览器的短链接,无视QQ报毒,任意网址均可生成。新版特色:全新界面,网站背景图采用Bing随机壁纸支持生成多种短链接兼容电脑和手机页面生成网址记录功能,域名黑名单功能网站后台可管理数据安装说明:由于此版本增加了记录和黑名单功能,所以用到了数据库。安装方法为修改config.php里面的数据库信息,导入install.sql到数据库。...