> # ♻️ 资源
> **大小:** 1.35MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100013199**](https://www.yuque.com/sxbn/ks/100013199)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/88228310**](https://download.csdn.net/download/s1t16/88228310)
> **注:更多内容可关注微信公众号,如当前文章或代码侵犯了您的权益,请私信作者删除!**
# 一、课程题目
实现一个java版本的坦克大战游戏。
**功能提示**:
- 游戏要有图形用户界面,界面能够反映游戏所有的细节
- 界面中要有坦克,墙,树林,河流
- 界面中要有一个“家”,“家”被攻击中则输了游戏
- 坦克分两种,敌方和我方
- 墙也分为两种,可以穿透的普通墙,不可以穿透的铁墙
- 树和河流均只有一种,树林坦克可以通过
- 坦克可以发射子弹,敌我方的子弹属性一样
- 我方子弹可以杀死敌方坦克,敌方子弹也可以杀死我方坦克,但需要多枪子弹才可以杀死
- 敌方之间不可以杀死对方
- 子弹击中坦克要有爆炸,但击中墙不能爆炸
- 我方可以吃血包增加生命
- 游戏可以暂停,重新开始,游戏帮助等功能
![image.png](https://cdn.nlark.com/yuque/0/2023/png/2469055/1692322412139-e170e395-03f3-442f-bc23-5ccfa02552ba.png#averageHue=%238d8582&clientId=u19986c90-6974-4&from=paste&height=491&id=u423867b6&originHeight=614&originWidth=917&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=381835&status=done&style=none&taskId=ufc9b39a6-20c3-451e-b4f0-3ee976cd357&title=&width=733.6)
# 二、题目分析与设计
## 2.1 需求分析
设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来,界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。
界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家”。
**坦克**:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到后自动调换方向。
**树**:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的元素,使得游戏更加贴切人性化。树的数目不限,以游戏整体界面清晰美观来决定数目。
**河流**:界面中要包括河流,河流作用与树林相同,同样河流的数目不限,以游戏界面整体美观度来决定数目。
**墙**:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时会损坏,而铁墙可以阻碍子弹的穿越。两方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越铁墙而使得游戏无法进行下去。
**家**:用户方除了有一辆自己的坦克外还有一个要保护的家,家由普通墙体包围,家受到子弹攻击后游戏立即结束,用户方则输了本局游戏。
**子弹**:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线移动,直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到一颗子弹攻击会爆炸从而导致死亡,死亡后坦克消失。用户方受到子弹攻击后会减少寿命,且受到四次攻击则死亡,此时如还有敌方坦克存在,则用户方输掉本次游戏。
**爆炸**:当子弹射击到坦克身上时,要产生爆炸效果。
**方向**:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹的方向从属于坦克的方向。
## 2.2 具体设计
以下的论述均根据上面需求分析的顺序来安排:
### 2.2.1 图形用户界面
图形用户界面要用到Java课程里的第六章的知识,需要用到抽象窗口工具集即AWT和Swing来设计实现,由于游戏需要有功能按键来控制游戏的重新开始,退出,暂停,帮助等,所以在实现过程中,设计菜单项。
坦克,河流,树,家,墙等都是调用各自类里面的draw函数来画出来,最后new一个图形面板出来,把所有的元素都add进面板就可以了。界面的构造在程序中由TankClient类的构造方法来完成,即没构造一个用户类都会产生这样一个包含各种游戏元素在内的界面。由于画面是静止的,而我们游戏的画面要求是动态的,游戏中的坦克和子弹都是在不断的动,可穿透的普通墙体也在“动”,所以对于画面,必须要不断的更新,重画才能产生动态的效果。
在程序中,此部分功能也是由TankClient类里的update函数和framPaint函数共同实现,将“动”的元素进行重画,而不动的元素如菜单项就不用重画,所以这也是为什么把菜单项设计进TankClient类的构造方法中。当然,图形用户界面中也包括对各种界面元素的大小,位置和颜色等设计,细节问题这里就不赘述。
### 2.2.2 界面中的元素
界面中的元素都是在构造界面的时候用界面实例对象的add方法加入进去的,且“动”的元素要不断更新重画。
### 2.2.3 坦克
坦克主要由Tank类来实现。坦克的属性:速度(有X轴和Y轴速度之分),坦克大小,坦克所在新的位置(X坐标和Y坐标),坦克是否还活着,行动方向等。所有的这些属性都有一个初始化值,从而在游戏一开始就可以运行。
在设计过程中,坦克出现的位置由坐标而定。用户方之后的位置由键盘监听方向,按指定方向以恒定的速度前进——此速度为全局静态变量,当没有接受到键盘的控制时,则保持静止。敌方的坦克则是根据随机数来控制随机的方向和路径的,当敌方坦克撞到阻碍物时,会转回到前一步的位置,从而解决了坦克撞到阻碍物不回头的问题,这个功能由Tank类里的changToOldDir()方法实现。
坦克的方向和子弹发射以及游戏的重新开始都是由键盘来控制的,所以在Tank类里面必须要实现这些功能。
Tank类的keyPressed()方法用于接受键盘的按键监听,接收到相应的键盘信息后,如接收到F,则表示发射子弹,所以此时要调用Tank类里的fire()方法,fire()方法不带传递参数,因为子弹的方向总是从属于坦克的方向和位置。
由于坦克在碰到墙,界面边界和“家”等阻碍物时要改变方向,所以在Tank里面必须对于每一种阻碍物要设计一个方法来作为应对策略,当然解决方法是把下一步的位置调整到上一步的位置。
用户方Tank还可以吃红心来增加自己的生命值,得到一个红心,增加100生命值。所以在程序中坦克必须要有一个方法来判断当坦克接触到红心时,生命值增加的方法。程序中用eat()方法来实现“吃”红心并且增加生命值,当然,这其中要使得坦克的生命值不会超过自己生命的极限值200,所以判断的时候,当生命小于等于100时,直接加100生命值,但是当生命值大于100时,就只能使生命值加满到极限值200.当然,说到生命值,一定要在图形用户界面中显示出来,所以在Tank类里面一定要设计一个方法,来画出生命的增减过程,在Tank类里面是用DrawBloodbBar()来刻画。
### 2.2.4 树林
树林主要是用来做修饰物体的,具有不透明性。由一个Tree类来描述,Tree有两个属性,位置和长宽。树的类里有一个自己的构造方法,当然还有一个必不可少的draw()方法。
### 2.2.5 河流
河流的作用与树林类似,这里不�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来,界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。 界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家”。 坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到后自动调换方向。 树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的元素,使得游戏更加贴切人性化。树的数目不限,以游戏整体界面清晰美观来决定数目。 河流:界面中要包括河流,河流作用与树林相同,同样河流的数目不限,以游戏界面整体美观度来决定数目。 墙:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时会损坏,而铁墙可以阻碍子弹的穿越。两方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越铁墙而使得游戏无法进行下去。 家:用户方除了有一辆自己的坦克外还有一
资源推荐
资源详情
资源评论
收起资源包目录
基于JAVA实现的(GUI)坦克大战游戏【100013199】 (100个子文件)
TankClient.class 12KB
Tank.class 7KB
Bullets.class 5KB
Home.class 3KB
GetBlood.class 2KB
BombTank.class 2KB
River.class 2KB
MetalWall.class 1KB
CommonWall.class 1KB
Tree.class 1KB
Direction.class 1022B
Tank$DrawBloodbBar.class 957B
TankClient$PaintThread.class 875B
TankClient$KeyMonitor.class 828B
TankClient$1.class 621B
.classpath 226B
3.docx 1.2MB
tree.gif 10KB
tree.gif 10KB
metalWall.gif 8KB
metalWall.gif 8KB
commonWall.gif 8KB
commonWall.gif 8KB
tankRU.gif 2KB
tankRU.gif 2KB
tankRD.gif 1KB
tankRD.gif 1KB
tankLU.gif 1KB
tankLU.gif 1KB
tankLD.gif 1KB
tankLD.gif 1KB
9.gif 1KB
9.gif 1KB
8.gif 1KB
8.gif 1KB
7.gif 1KB
7.gif 1KB
tankD.gif 1KB
tankD.gif 1KB
tankU.gif 1KB
tankU.gif 1KB
tankL.gif 1KB
tankL.gif 1KB
tankR.gif 1KB
tankR.gif 1KB
6.gif 1KB
6.gif 1KB
10.gif 1KB
10.gif 1KB
5.gif 1KB
5.gif 1KB
4.gif 1KB
4.gif 1KB
3.gif 1KB
3.gif 1KB
2.gif 936B
2.gif 936B
1.gif 868B
1.gif 868B
bulletLD.gif 864B
bulletLD.gif 864B
bulletRU.gif 863B
bulletLU.gif 863B
bulletRU.gif 863B
bulletLU.gif 863B
bulletRD.gif 861B
bulletRD.gif 861B
bulletD.gif 855B
bulletD.gif 855B
bulletU.gif 852B
bulletU.gif 852B
bulletL.gif 839B
bulletR.gif 839B
bulletL.gif 839B
bulletR.gif 839B
0.gif 824B
0.gif 824B
TankClient.java 13KB
Tank.java 7KB
Bullets.java 4KB
Home.java 2KB
BombTank.java 2KB
GetBlood.java 1KB
River.java 1KB
MetalWall.java 815B
CommonWall.java 733B
Tree.java 659B
Direction.java 64B
screen.jpg 36KB
screen.jpg 36KB
river.jpg 14KB
river.jpg 14KB
home.jpg 9KB
home.jpg 9KB
LICENSE 1KB
README.md 36KB
hp.png 2KB
hp.png 2KB
org.eclipse.ltk.core.refactoring.prefs 134B
.project 367B
共 100 条
- 1
资源评论
神仙别闹
- 粉丝: 2706
- 资源: 7641
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- tomcat安装及配置教程.md
- 51单片机贴片心形灯原理图PCB程序 亚克力外壳.dwg资料
- 户型为单家独院式图纸编号D068-三层-20.60&13.40米-施工图.dwg
- 农村小别墅图纸编号D067-三层-10.00&11.50米- 施工图.dwg
- 三层独栋别墅图纸编号D066-三层-12.00&12.00米- 施工图.dwg
- 农村小别墅图纸编号D065-三层-14.40&18.55米-施工图.dwg
- 基于YOLOv8检测高铁吊弦缺陷实现的系统的Python源码+文档说明+训练源文件+模型.zip
- 三层农村小别墅图纸编号D064-三层-13.80&22.20米-施工图.dwg
- 三层别墅图纸编号D063-三层-13.57&17.40米- 施工图.dwg
- STC IAP15F2K61S2单片机i2c 接口PCF8591-ADC实验+DAC实验 KEIL例程源码+开发板硬件原理图
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功