• 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.希望能实现联网对战.

  • 相关阅读:
    微信小程序----导航栏滑动定位(实现CSS3的position:sticky效果)
    微信小程序----侧滑菜单(Popup---左侧滑动,右侧不动)(MUI侧滑导航)
    微信小程序----侧滑菜单(Popup----左侧不动,右侧滑动)(MUI侧滑导航)
    微信小程序----gallery slider(图片轮播)组件
    微信小程序----页面生命周期
    微信小程序----App生命周期
    HDU-1180-诡异的楼梯
    HDU-2031-进制转换
    POJ-1852-Ants
    POJ-2386-Lake Counting
  • 原文地址:https://www.cnblogs.com/g1215161797/p/14342251.html
Copyright © 2020-2023  润新知