一、 实验项目名称
冷血的猎人
二、 实验项目功能描述
1、 用w、s、a、d控制猎人上下左右,并能斜向行走。
2、 击败敌人,敌人一波比一波多,打败野怪会爆出装备,可以捡取,造成各种负面或增益效果。
3、不同的敌人随机出现,进攻性动物会向人的方向移动,其它敌人随机给一个坐标,然后斜向移动到随机坐标后再随机一个坐标,直到死亡。
4、有边界,不能出界
5、野怪已经有伤害,碰到就会受到伤害,如果野怪和人长时间处于一定范围内,则0.4秒才造成一次伤害。
三、 项目模块结构介绍(文字+总体模型)
1、 开始模块:gamecome():输出游戏开始前的图片和文字还有说明。能选择开始游戏和结束游戏。
2、 游戏模块:game():在主函数中,内涵初始化模块,持续运行模块,显示画面模块,有关数据输入运行模块。游戏结束模块。
3、 初始化模块:startup();函数:指定游戏界面的宽高,读取各种图片到各个IMAGE对象中,设定自己操作的人物的初始状态,最开始出现的敌人数量,显示背景和人物
4、 持续运行模块:updateWithoutInput():如果敌人数量为零,重新生成敌人,且生成的敌人数一次比一次多,直到最大值。生成的敌人随机,小敌人几率低,大敌人几率高,生成在游戏界面上的位置也随机。生成的敌人一部分会向人的方向移动,一部分随机移动,且不会出界。野怪死亡则爆出装备,拾取获得各种增益或负面效果。
5、 显示画面模块:show(),显示背景,人物朝哪个方向移动,人物的图像就改变成向哪个方向的图片。敌人的血量大于零,则输出敌人图片,否则输出爆出的装备,直到被人拾取才不输出图片。
6、 有关数据输入运行模块:updateWithInput():定义鼠标信息,得到鼠标输入,如果鼠标左键按下。就输出子弹或使用近身武器。判断输出时人物图片。人物移动输入,如果不达到边界,则输出移动时的人物图片,如果是边界,则不动。
7、 游戏结束模块:gameover():结束游戏,进行后续处理,用户可以选择继续游戏和结束游戏,继续游戏则重新初始化,全部重来。结束游戏则退出游戏。
四、 实现界面展示
五、 代码托管链接
https://gitee.com/xqldc/xqldx.git
六、 实验总结(提出问题+解决办法+感想)
遇到的问题,嗯嗯嗯,问题实在是太多了,就举几个比较有代表性的吧。
遇到的问题一:野怪在走向生成的随机坐标的时候,会因为斜率过大,导致y变换过大。
解决的办法:换了一种算法,把斜率控制在正负根号三以内,超过则不用斜率计算。
遇到的问题二:想把血量和蓝条输出在屏幕上,但输出不了。
解决的方法:通过上次的经验,发现必须在FlushBatchDraw();函数前输出;所以把输出血量和蓝条写在了show函数中。
感想:就快全做完了,游戏已经快收工了,其实现在已经可以玩了,但是我们还在优化,加油!做完就复习。