1.玩家坦克类
构造方法:html
设置坐标位置(坦克出生的位置),坦克的图片,坦克的类型(玩家仍是电脑),面板(可将坦克放置于当前面板中),代码截图以下:编程
移动方向:(上下左右)数组
左移思路:若当前方向不是左移,则将图片更改成左移图片,而且更新方向为左。ui
若通过碰撞检测发现不会产生碰撞,则改变坐标,而且要判断坐标是否在边界。spa
其余方向同理,代码截图以下:线程
碰撞检测:(墙与电脑坦克)设计
思路:获取当前坐标周围必定范围内的矩形边框,同时获取当前面板内的全部墙体对象,将其存放于数组中。将得到的矩形范围与全部墙体互相匹配,若符合则说明会产生碰撞。注意草地例外。3d
坦克碰撞检测同理,注意要将本身除外,而且要查看当前坦克是否存活,代码截图以下:htm
得到子弹:对象
根据上下左右的方向判断坦克头的位置,即子弹发射的方向的预设,以保证以后子弹朝预设方向移动(子弹的移动在子弹类里)
攻击方法:得到子弹,将子弹添加至面板(由于子弹有四个方向),启动攻击冷却线程。
触碰边界方法:根据屏幕与主窗体之间的大小关系,进而判断坦克是否移动到边界。
冷却线程:
使用sleep()方法,通过休眠以后,要注意改变线程的状态,将其改成可攻击。
其他setter,getter方法则不进行详细描述。
2.电脑坦克类
构造方法:继承自父类玩家坦克类,设置好初始方向,攻击冷却时间
移动方向:在父类的基础上,改变了父类的手动产生新方向,而是随机产生新方向,而且在该方向的移动时间是设置好的,检测是否达到边界同理:
碰撞检测,攻击方法的思路都与玩家坦克类类似,不一样之处在于,玩家坦克类的方向是人为改动的,而电脑坦克类的方向是随机产生的,故要重写父类的这两个方法。
攻击方法:只有4%的几率产生攻击,用随机数实现
本次课设遇到的问题:
1. 因为本次课设是小组分工,全部组员要多进行交流,产生的问题要协力解决。
2. 在进行多关卡的设置时,咱们对关卡的跳转处理很差,在游戏结束时,仍可以进入到下一关,通过排查,咱们发现是由于level的值未及时调整,致使即时游戏失败,也能进入到下一关。
3. 对图片的路径产生了疑问,以后利用枚举将路径存储于字符串,方便以后的使用。
4. 在游戏时,咱们发现每打死一个坦克,都会出现异常,最后发现是咱们爆炸的图片没有处理好。
收获:
1. 学会了如何以团队的方式完成一个代码的整合。
2. 对Java有了更深层次的理解,对面向对象设计有了深入的了解,Java与c语言不一样,c语言是面向过程的编程,而JAVA编程思想是面向对象的编程,即要有万物皆对象的设计思想,要理解对象之间的关系,要了解一个对象有什么样的属性和什么样的方法。