坦克大战——坦克类

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

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

Java课程设计——坦克大战的更多相关文章

  1. java课程设计-坦克大战

    团队课程设计博客链接 个人负责模块 枚举类.工具类.子弹类.图片素材的查找,地图制作 Git管理 包名类名的命名 详细说明 枚举类 如 单人和双人模式 工具类 将每个图片的路径使用字符串保存,便于调用 ...

  2. java(课程设计之记事本界面部分代码公布)

    代码:涉及记事本的一些界面......!! /* *java课程设计之记事本(coder @Gxjun) * 编写一个记事本程序 * 要求: * 用图形用户界面实现. * 能实现编辑.保存.另存为.查 ...

  3. Java小项目--坦克大战(version1.0)

    Java小项目--坦克大战<TankWar1.0> 这个小项目主要是练习j2se的基础内容和面向对象的思想.项目实现了基本的简单功能,我方一辆坦克,用上下左右键控制移动方向,按F键为发射炮 ...

  4. java课程设计(计算器)

    JAVA课程 设 计 报 告 1206401-18   瞿杰 一.设计时间 2013年6月 24日-----6月28日 二.设计地点 湖南城市学院实验楼计算机506机房 三.设计目的 1.巩固学习VB ...

  5. Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)

    #课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...

  6. Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)

    Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...

  7. java课程设计--We Talk(201521123061)

    java课程设计--We Talk(201521123061) 团队博客链接:http://www.cnblogs.com/slickghost/ 数据库 一.通过Dao模式建立与数据库的连接 1.数 ...

  8. Java 课程设计 "Give it up"小游戏(团队)

    JAVA课程设计 "永不言弃"小游戏(From :Niverse) 通过Swing技术创建游戏的登陆注册界面,使用mySQL数据库技术完成用户的各项信息保存和游戏完成后的成绩保存. ...

  9. Java课程设计----仿Windows标准型计算器

    JAVA课程设计 仿Windows标准型计算器(By Yanboooooooo) 一.团队介绍: 连燕波[组长]:网络1513学生. 张文博[组员]:网络1513学生. 二.项目git地址 码云项目地 ...

随机推荐

  1. 用TestPMD测试DPDK性能和功能

    本文介绍了数据平面开发工具包(DPDK)TestPMD应用程序,展示了如何构建和配置TestPMD, 以及如何用它来检查使用DPDK的不同网络设备的性能和功能. TestPMD是一个使用DPDK软件包 ...

  2. JDBC插入性能优化对比

    今天对Insert进行了性能测试,结果反差很大,平时都是单条插入,虽然性能要求没有那么高,但是突然在项目中,人家给定时间内完成,这就尴尬了. 优化数据库,优化服务器,优化代码,反正通过各种优化提高数据 ...

  3. EditText实现输入表情

    EditText实现输入表情 一.简介 editText是TextView的子类,TextView能用的工具EditText都能用,这里就是editText利用SpannableString的Imag ...

  4. spring3: AOP 之切面实例化模型 ——跟我学spring3

    所谓切面实例化模型指何时实例化切面. Spring AOP支持AspectJ的singleton.perthis.pertarget实例化模型(目前不支持percflow.percflowbelow ...

  5. 用OpenCV进行视频截取

    记录用OpenCV进行视频截取. 核心代码如下: CvCapture* capture = cvCreateFileCapture(src_avi_file.c_str()); if (capture ...

  6. python---迭代器与生成器(一)

    迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代 ...

  7. cassandra框架模型之一——Colum排序,分区策略 Token,Partitioner bloom-filter,HASH

    转自:http://asyty.iteye.com/blog/1202072 一.Cassandra框架二.Cassandra数据模型 Colum / Colum Family, SuperColum ...

  8. 《修炼Java开发技术 在架构中体验设计模式和算法之美》 - 书摘精要

    (P7) 建议直接加入到软件公司中去,这样会学到很多实际的东西: 程序员最主要的发展方向是资深技术专家,无论是 Java..Net 还是数据库领域,都要首先成为专家,然后才可能继续发展为架构师: 增强 ...

  9. 【python】import问题总结

    一.绝对引用 首先总结一下import的各种姿势: 1.import package 读这个包的__init__.py 2.import module 读这个模块全部内容 3.import packa ...

  10. php实现安装程序的 安装

    install.php 只要填写数据库就可以把数据插入到数据库中,实现安装 <?php header("Content-type:text/html;charset=utf-8&quo ...