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编程思想是面向对象的编程,即要有万物皆对象的设计思想,要理解对象之间的关系,要了解一个对象有什么样的属性和什么样的方法。

  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/hexintong99/p/10279072.html
Copyright © 2011-2022 走看看