zoukankan      html  css  js  c++  java
  • Java课程设计——坦克大战

     坦克大战——坦克类

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

          https://www.cnblogs.com/chenhuilin/p/10275664.html

    二.个人负责模块和任务说明

    模块:坦克类(玩家坦克类+电脑坦克类),代码整合

    三.代码的提交记录截图

     

    四.负责模块和任务详细说明

    玩家坦克继承VisibleImage类,电脑坦克类继承自玩家坦克类,UML如下:

    1.玩家坦克类

    构造方法:

    设置坐标位置(坦克出生的位置),坦克的图片,坦克的类型(玩家还是电脑),面板(可将坦克放置于当前面板中),代码截图如下:

     

    移动方向:(上下左右)

    左移思路:若当前方向不是左移,则将图片更改为左移图片,并且更新方向为左。

    若经过碰撞检测发现不会产生碰撞,则改变坐标,并且要判断坐标是否在边界。

    其他方向同理,代码截图如下:

    碰撞检测:(墙与电脑坦克)

    思路:获取当前坐标周围一定范围内的矩形边框,同时获取当前面板内的所有墙体对象,将其存放于数组中。将获得的矩形范围与所有墙体互相匹配,若符合则说明会产生碰撞。注意草地例外。

    坦克碰撞检测同理,注意要将自己除外,并且要查看当前坦克是否存活,代码截图如下:

    获得子弹:

    根据上下左右的方向判断坦克头的位置,即子弹发射的方向的预设,以保证之后子弹朝预设方向移动(子弹的移动在子弹类里)

    攻击方法:获得子弹,将子弹添加至面板(因为子弹有四个方向),启动攻击冷却线程。

    触碰边界方法:根据屏幕与主窗体之间的大小关系,进而判断坦克是否移动到边界。

    冷却线程:

    使用sleep()方法,经过休眠之后,要注意改变线程的状态,将其改为可攻击。

    其余setter,getter方法则不进行详细描述。

    2.电脑坦克类

    构造方法:继承自父类玩家坦克类,设置好初始方向,攻击冷却时间

    移动方向:在父类的基础上,改变了父类的手动产生新方向,而是随机产生新方向,并且在该方向的移动时间是设置好的,检测是否达到边界同理:

    碰撞检测,攻击方法的思路都与玩家坦克类相似,不同之处在于,玩家坦克类的方向是人为改动的,而电脑坦克类的方向是随机产生的,故要重写父类的这两个方法。

     攻击方法:只有4%的概率产生攻击,用随机数实现

    五.课程设计感想

    本次课设遇到的问题:

    1. 由于本次课设是小组分工,所有组员要多进行交流,产生的问题要合力解决。

    2. 在进行多关卡的设置时,我们对关卡的跳转处理不好,在游戏结束时,仍能够进入到下一关,经过排查,我们发现是因为level的值未及时调整,导致即时游戏失败,也能进入到下一关。

    3. 对图片的路径产生了疑问,之后利用枚举将路径存储于字符串,方便之后的使用。

    4. 在游戏时,我们发现每打死一个坦克,都会出现异常,最后发现是我们爆炸的图片没有处理好。

    收获:

    1. 学会了如何以团队的方式完成一个代码的整合。

    2. 对Java有了更深层次的理解,对面向对象设计有了深刻的了解,Java与c语言不同,c语言是面向过程的编程,而JAVA编程思想是面向对象的编程,即要有万物皆对象的设计思想,要理解对象之间的关系,要了解一个对象有什么样的属性和什么样的方法。

  • 相关阅读:
    求助:多个参数的存储过程
    经典回顾:哲学家进餐问题(The Dinning Philosophers Problem)
    杨辉三角
    开发公共课选修系统之二
    关于即时消息系统
    用户 'NT AUTHORITY/NETWORK SERVICE' 登录失败 的解决方法(转)
    细说反射API
    东莞哪家公司可以提供实习的机会?
    使用Gmail发送email时出现Must issue a STARTTLS command first错误!!
    Revolution
  • 原文地址:https://www.cnblogs.com/hexintong99/p/10279072.html
Copyright © 2011-2022 走看看