JAVA面向对象程序综合设计

一、团队课程设计博客链接

[团队博客地址]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.希望能实现联网对战.

posted @ 2021-01-28 22:05  甘津津  阅读(68)  评论(0编辑  收藏  举报