一、团队课程设计博客链接
[团队博客地址]https://www.cnblogs.com/200157zy/p/14334307.html
二、个人负责模块或任务说明
- 个人负责任务:炮塔类的实现以及部分方法的实现。
- 炮塔类UML图:
- 用图片展示不同等级的炮塔
代码实现:
根据图片文件的命名,用下标确定不同等级的炮身,即00为第一级、10第二级、20第三级,完成对炮身图片的读取。
- 控制发射子弹的间隔
描述:为了使炮塔更加多样化,不同炮塔之间的射速理应不同。
代码实现:
总共有五种炮塔,通过操控index数值,使不同炮塔的发射速度不同。
- 星头炮群伤效果实现
描述:为了使炮塔更加多样化,将星头炮塔设计为:在命中目标后,能继续对目标周围的敌军造成范围伤害。
代码实现:
在命中目标后,将子弹的宽、高加大,使怪物更容易撞上子弹,形成群伤效果,同时,为了群伤效果的美观,须调整放大后的子弹的x、y坐标。
- 风扇头炮连续打击效果实现
描述:为了使炮塔更加多样化,将风扇头炮的子弹设定为在命中目标后不消失,仍能继续打击下一目标直至子弹飞出界外。
除风扇头子弹外,其他子弹超出对应射程,即没有命中目标时,就该移除该子弹,从而达到风扇头子弹可以连续打击多名怪物的效果。
- 监听鼠标,进行建塔、升级塔和拆塔操作
描述:要能判断是进行建塔、升级塔还是拆塔操作。
代码实现:
当OperateOrNot被置为false时,便可跳过canOperate中对六个区域的挨个遍历直接返回true,缩短了反应时间。
前面的if语句决定SELECT_TOWER、updateTowerOrNot、deleteTowerOrNot三者的状态的,后面的else语句则根据这三者进行建塔、升级塔或拆塔操作。
SELECT_TOWER为ture时,进行盖塔操作;deleteTowerOrNot为ture时,进行拆塔操作;updateTowerOrNot为真时,进行升级操作。
三、自己的代码提交记录截图
提交说明:
第一次修改:把各炮塔都调整成能随着目标的移动而旋转炮塔。
第二次修改:去除了炮塔旋转方法中的static,解决了炮身随着塔的新建会全部变得和新塔一样的问题。
第三次修改:将炮身图片变量的修饰符改为protected。
四、课程设计感想
虽然没能完美复刻原版游戏,略有遗憾,但是还是完成了我们最初的几个目标——程序能跑、画质不崩、萝卜不死。第一次通过小组合作编写完成一个游戏,
既有痛苦,也有收获,自己的游戏能运行起来就是我们最大的快乐。通过此次课程设计,我巩固了旧知识,尤其是在对修饰符和static的使用上,一旦用错,
就会发生诸如所有炮塔突然变得一样的情况。同时,也学到了不少关于图形的操作,对平时所玩的游戏有了新的认识。
五、未能完成的功能
-
1.未能完成游戏存档功能。
-
2.没有实现暂停游戏的功能。
-
3.原先想把章鱼头炮台设计成“命中时能暂时击退敌人”的效果,不过没搞出来,就改成低速重伤效果了。
-
4.应给予玩家更多提示,比如标出能建塔的区域、升级塔时能看到所需的费用、不能升级时也应该有所提示。
-
5.希望能实现联网对战.