太空战机实验报告
1 .实验截图
图一开始游戏
图二我方战机敌方战机出现。敌方战机随机发射子弹并上下浮动。背景音乐响
起。
图三射杀战机积分增加。敌机与子弹碰撞消失。
图四被敌机射杀血量减少为0
2.游戏功能
游戏规则
1.按下空格键游戏开始。
2.通过WS AD键控制玩家飞机移动上下左右移动但不能飞出边境。
3.当玩家按下空格键时玩家飞机发射子弹。
4.玩家飞机被敌机碰到后生命值会减少生命值变为0的时候游戏结束。
5.在游戏右方会一直出现电脑飞机敌机 敌机分为超大、大、中、
小四种类型越大的飞机出现的几率越小。
6.敌机被玩家飞机击中后生命值会减少生命值变为0时该敌机被摧毁玩家得分。越大的飞机越难击毁击毁后玩家得分也越多。
7.敌机飞到界面左方时删除敌机。
8.敌方飞机的子弹分为两种一种为普通子弹,另一种子弹为高级子弹当敌方飞机的普通子弹与玩家飞机的子弹碰撞时相互抵消,敌方飞机的高级子弹不会与玩家飞机的子弹抵消
9.在界面外用一个文本显示玩家游戏得分。
3.流程图
4.数据结构
创建5个继承类我方战机类CMyFighter、子弹类CBullet、敌方战机类CEnemyFighter类、链表类C SpriteList、精灵父类CGame Sprite。
1.我方战机类C MyF ighter m_fVelocityLeft; 控制飞机飞行的速度上下左右。 //m_fVelocityRight;m_fVelocityUp;m_fVelocityDown;
.
表示子弹的发射间隔// m_fBulle tC reateT ime;
m_b C anF ire; //表示判断是否开火
2.子弹类C Bull et m_iType //表示该子弹是谁发射的变量
3.敌方战机类C EnemyF ighter:m_fCreateTime;
//创建敌机的时间见隔m_iCreatedSpriteCount;//表示创建战机数量m_fC anF ireAfte rC reated; //判断敌机创建后能否开火m_fBulletC re ateT ime; //子弹发射时间间隔m_fF lo atTime; //战机飞行时上下浮动的时间间隔m_bF lo atUp; //战机飞行时是上浮还是下浮
4.链表类C Sp riteL is t:s truc t Sp rite S truc t //一个精灵结构体Sp rite S truc t {
C Sp rite
*p Sp rite;
S p rite S truc t*pNext;
S p rite S truc t*p P rev;
};
S p rite S truc t*m_p Lis tHe ad er; //一个头节点指针int m_iListSize; //表示链表节点数的私有成员变量C Sp rite*m_p Sp rite L is t; //精灵指针
5.精灵父类CG ame S p rite
方法//get virtual~CGameSprite();
6.lessen.x类m_iG ame S tate;
//游戏状态0结束或者等待开始1 初始化2游戏进行中.CS p rite*m_p G ameBeg in; //游戏开始文字精灵
CMyFighter*m_pMyFighter; //战机类指针float m_iCreatedSpriteCount; //创造精灵数量
C Sp riteL is t m_S p rite L is t; //链表类精灵
C SpriteList diji; //链表类敌机
CEffect*die_texiao; //特效类精灵
5.算法描述
在外星球上玩家通过键盘WSAD键控制己方战机通过空格键发射子弹消灭外星球的邪恶战机。
游戏状态m_iG ame S tate分为三种状态0 1 2 其中0表示游戏结束状态 1表示游戏初始化 2则表示游戏运行状态
0?1的转换为“空格开始”初始化函数为G ameIn it函数
播放背景音乐。
1?2的转换自然发生即游戏初始化函数后会自动将游戏状态从1置为2
表示游戏运行状态在该状态敲击空格发射子弹消灭敌机 2消灭敌机分数增加被敌机打中自身的血量减少。
2?0的转换是游戏结束。
CGameMain: :C GameMain()构造函数
完成初始化工作
初始化状态为0
设置开始按钮
我方战机初始化为空
创造精灵数量初始化为0
CGameMain: :GameMainLoop(float fDeltaTime)
游戏的主循环根据游戏的状态切换逻辑
1、 当当游戏状态为0时主循环一直循环但不做处理而是等待空格键按下开始游戏。调用背景音乐。
2、 当游戏状态为1时调用G ameInit()方法初始化游戏然后置游戏状态为2。当游戏状态为2时调用G ameRun(fDe ltaT ime)方法在CG ameMa in类的G ameRun方法中遍历链接中的每个节点获得所有敌方战机的节点让战机执行Lo op Tic k方法实现战机发射子弹和上下浮动。
。 0且置状态为G ameEnd游戏结束时会执行、 3
CGameMain: :GameInit()
完成对各种精灵的初始化
1.播放放在bin中的游戏背景音乐。
2.初始化我方战机为战机类指针”C o ntro lS p rite”.设计我方战机的世界边界限制。
3.初始化分数为0.
4.初始化血量为100.
CGameMain: :GameRun(floatfDeltaTime)
对于游戏进行的设置
1.如果是我的战机我方战机初始化
2.敌方战机引用函数CEnemyF ighter: :C las s Tick(fDe ltaTime)进行引用。
3.当游戏状态为2时调用G ameRun(fDe lt aT ime)方法在CG ameMa in类的G ame Run方法中遍历链接中的每个节点获得所有敌方战机的节点让战机执行LoopTick方法实现战机发射子弹和上下浮动。 CGameMain: :OnKeyDown(constintiKey,constboolbAltPress,constboolbShiftPress,constboolbCtrlPress)
游戏开始和控制按钮
1、如果空格按下时游戏未开始即游戏状态为0 则将游戏状态改为1 运行游戏初始化函数G ameInit 。隐藏文字精灵“开始游戏”。
2、如果游戏状态是2时设置战机移动调用函数O nMo ve
3、如果空格按下时,战机为空。则调用函数S etC anF ire 按下空格键即可发送子弹。void CGameMain: :OnSpriteColSprite(const char
*szSrcName,const char*szTarName)
易探云怎么样?易探云是目前国内少数优质的香港云服务器服务商家,目前推出多个香港机房的香港云服务器,有新界、九龙、沙田、葵湾等机房,还提供CN2、BGP及CN2三网直连香港云服务器。近年来,许多企业外贸出海会选择香港云服务器来部署自己的外贸网站,使得越来越多的用户会选择易探云作为网站服务提供平台。今天,云服务器网(yuntue.com)小编来谈谈易探云和易探云服务器怎么样?具体香港云服务器多少钱1个...
digital-vm,这家注册在罗马尼亚的公司在国内应该有不少人比较熟悉了,主要提供VPS业务,最高10Gbps带宽,还不限制流量,而且还有日本、新加坡、美国洛杉矶、英国、西班牙、荷兰、挪威、丹麦这些可选数据中心。2020年,digital-vm新增了“独立服务器”业务,暂时只限“日本”、“新加坡”机房,最高也是支持10Gbps带宽... 官方网站:https://digital-vm.co...
以前我们在参与到云服务商促销活动的时候周期基本是一周时间,而如今我们会看到无论是云服务商还是电商活动基本上周期都要有超过一个月,所以我们有一些网友习惯在活动结束之前看看商家是不是有最后的促销活动吸引力的,比如有看到阿里云年中活动最后一周,如果我们有需要云服务器的可以看看。在前面的文章中(阿里云新人福利选择共享性N4云服务器年79.86元且送2月数据库),(LAOZUO.ORG)有提到阿里云今年的云...