FunCode游戏开发设计文档微信版打飞机编写:2017年5月18日目录一、问题定义............................................................................................................................1二、实验准备............................................................................................................................1三、可行性分析........................................................................................................................3四、用例图及类图设计............................................................................................................4五、时序图设计与流程描述..................................................................................................135.1游戏初始化...............................................................................................................135.2键盘相关函数设计....................................................................................................145.3游戏运行相关设计...................................................................................................165.4碰撞函数设计...........................................................................................................225.5游戏结束设计...........................................................................................................23六、编码与实现......................................................................................................................24Plane类...........................................................................................................................24Player类...........................................................................................................................25EnemyPlane类.................................................................................................................26Bullet类............................................................................................................................27PlaneItem类.....................................................................................................................28SpriteFactory类...............................................................................................................28PlaneGame类..................................................................................................................29EnumDefine类.................................................................................................................32LessonX类........................................................................................................................34《微信版打飞机》课程报告1第1页一、问题定义开发一款微信打飞机的小游戏,实现自己飞机击毁敌机得分,吃到加血物品加血,吃到加魔的物品加魔,魔到一定值时可以通过吃掉相应物品在一定时间内获得不同的子弹发射方式和飞机移动速度。规则如下:1.按下空格键游戏开始。2.通过WSAD键控制玩家飞机移动上下左右移动,但不能飞出边境。3.玩家飞机每隔一段时间自动发射一发炮弹。4.玩家飞机被敌机碰到后,生命值会减少,生命值变为0的时候,游戏结束。5.在游戏上方会一直出现电脑飞机(敌机),敌机分为大、中、小三种类型,越小的飞机出现的几率越大。6.敌机被玩家飞机击中后,生命值会减少,生命值变为0时,该敌机被摧毁,玩家得分。越大的飞机越难击毁,击毁后玩家得分也越多。7.敌机飞到界面下方时,删除敌机。8.在界面外用一个文本显示玩家游戏得分。二、实验准备打开FunCode,创建一个新的C++项目。注意:项目名称必须为英文和数字,且不能有空格。点击“项目”→“导入地图模板”,从对话框中选取名称为WarPlane的模板导入。导入成功后,界面如下:《微信版打飞机》课程报告2第2页查看模板设置。模板设置中有如下几点,在项目开发时需要用到:精灵的名称,创建精灵对象时,通过精灵名称把对象和精灵图片绑定在一起。玩家飞机的链接点,右下图鼠标点击的位置就是玩家飞机的链接点,飞机发散子弹时,位置应该在链接点前方位置。《微信版打飞机》课程报告3第3页子弹的碰撞边界的设定,把碰撞边界设置在图片中的有颜色区域,这样敌方飞机实际是碰撞到子弹图片的有颜色区域才发生碰撞事件,从而是游戏效果更逼真。在“场景预览”窗口中,点击游戏屏幕之外的区域,然后在“编辑”面板中修改“窗口大小”,该属性用来设置游戏运行时屏幕大小。“屏幕位置”中的“宽”“高”则是用来设置“场景预览”窗口中可见区域的大小。按下图进行设置。也可以自行调整这两个区域大小,以及图片大小,从而达到最佳效果。三、可行性分析FunCode作为一个功能比较简单,封装的库函数不多的,游戏开发引擎,上手比较容易,对于开发平台的性能要求也不高,符合技术可行性和系统可行性。《微信版打飞机》课程报告4第4页四、用例图及类图设计玩家控制飞机移动,飞机自动发射子弹,然后游戏一直循环,当飞机HP归0时游戏结束。《微信版打飞机》课程报告5第5页飞机类作为其他所有和飞机相关类的基类,PlaneGame类是控制类,这个游戏的主要实现在PlaneGame类中完成。包括设定子弹、开火、删除已摧毁精灵、通过名字获得精灵、播放动画、创建敌机、创建物品等动作。类的具体定义如下:飞机类:Plane继承自CSprite类属性privateintiHP飞机生命值privatefloatfPointX飞机当前位置中心点的X坐标privatefloatfPointY飞机当前位置中心点的Y坐标《微信版打飞机》课程报告6第6页privatefloatfSpeedX飞机X轴方向移动速度privatefloatfSpeedY飞机Y轴方向移动速度方法publicintgetHP()获取飞机生命值publicvoidsetHP(inthp)根据参数设置飞机生命值publicfloatgetPointX()获得飞机的X坐标publicvoidsetPointX(intx)设置飞机的X坐标publicfloatgetPointY()获得飞机的Y坐标publicvoidsetPointY(inty)设置飞机的Y坐标publicfloatgetMoveSpeedX()获得飞机X轴方向上速度publicvoidsetMoveSpeedX(floatspeedX)设置飞机X轴方向上速度publicfloatgetMoveSpeedY()获得飞机Y轴方向上速度publicvoidsetMoveSpeedY(floatspeedY)设置飞机Y轴方向上速度敌方飞机类:EnemyPlane继承自Plane类属性privateintiValue敌机价值,即玩家飞机击毁敌机后可获得分数privateintiType飞机类型。0–大型敌机1–中型敌机2–小型敌机方法publicintgetValue()获取敌机价值《微信版打飞机》课程报告7第7页publicvoidsetValue(intvalue)设置敌机价值publicintgetPlaneType()获取敌机类型publicvoidsetPlaneType(intplaneType)设置敌机类型玩家飞机类:Player继承自Plane类属性privateintiScore玩家得分privatefloatfFireTime玩家发射子弹的时间间隔,可理解为安装子弹需要的时间privatefloatfUsedTime玩家飞机安装子弹已经用去的时间privateintiMp魔抗值privateboolflag标志位方法publicintgetScore()获取玩家得分publicvoidsetScore(intscore)设置玩家得分publicfloatgetFireTime()获取玩家子弹发射间隔publicvoidsetFireTime(floatfireTime)设置玩家子弹发射间隔publicfloatgetUsedTime()获取玩家飞机装弹已用时间publicvoidsetUsedTime(floatusedTime)设置玩家飞机装弹已用时间publicvoidmove()玩家飞机移动publicvoidstopMove(inthp)忘记飞机停止移动publicvoidfire()玩家飞机发射子弹publicintgetMP()获得魔抗《微信版打飞机》课程报告8第8页publicvoidsetMP(intmp)设置魔抗publicboolgetflag()获得标志位publicvoidsetflag()设置标志位子弹类:Bullet继承自Plane类属性privateintiDamag