找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 405|回复: 0

Java程序员用几行代码开发坦克大战,网友:好操作,附赠源码教程 ...

[复制链接]

该用户从未签到

发表于 2019-11-23 17:23:49 | 显示全部楼层 |阅读模式

您需要 登录 才可以下载或查看,没有账号?立即注册

×
坦克大战运用到的Java知识:集合、Swing、线程。
编程思想:
在主类开启一个线程,没50毫秒循环一次画方法(绘制整个界面内的所有东西)。画的东西有敌我坦克(颜色区分)、子弹、墙、血块、爆炸。所以总共写出了几个类:Tank坦克类、Missile子弹类、Wall墙类、Blood血块类、TankClient主类。在每一个类中均写有画方法实现本类属性的绘制功能。在主类中有键盘监听事件调用这Tank类的键盘监听事件。通过键盘监听判断出对Tank做出相应的移动,而敌方Tank则是随机运动。并且每次刷新都有调用各类的碰撞方法,判断一些不该碰撞的对象的情况时做出处理。而每个对象的创建例如子弹这些是在触发产生之后将新建子弹类加入一个子弹类集合之中,在绘制的时候判断集合中的数量进行绘制,出界或者打死坦克则在集合中删除。其他类也均相似,不在细说。
展示一下游戏界面:
Sfi694RpFgpYZ046.jpg

游戏原理:
1、敌我坦克:在坦克类里面有一个布尔类型变量good。用于判断坦克的阵营,在创建坦克对象时在Tank类的构造方法中传入good的值。在画坦克的时候判断good的值,区分敌我坦克的颜色;
2、坦克运动:在坦克类里写入了监听键盘摁键的响应事件,对监听到的上下左右键进行记录,并合成坦克移动的八个方向的变量。之后对应每个方向的不同对坦克坐标x,y的值做响应的更改实现我方坦克的移动。而敌方坦克则自动移动,通过随机数对敌方坦克移动方向的随机,并且随机出每次移动的次数。两个随机值相结合即实现了敌方坦克的移动。
3、坦克发射子弹:通过键盘监听,检测到发射子弹命令后将主类的子弹类集合中添加一个子弹类。将炮筒的方向以及坦克的位置以及坦克的阵营传入给子弹类,在主类paint画方法中一直循环子弹类集合,如果集合内有子弹,就画出来。这样就实现了发射子弹。
4、坦克、子弹、墙的碰撞:在坦克类子弹类墙类中分别getRect方法获取自身的范围,然后在每次画坦克、子弹时都会进行相应的碰撞检测(在坦克类里有与墙和出自己外的坦克相撞的处理方法、在子弹类里有与墙和坦克相碰撞的处理方法。),如果自身与不该碰撞的物体的范围相重合,则代表两物体相撞。
5、坦克加血:在血块类中有血块与我方坦克相碰撞的处理方法,如果血块范围与坦克范围重合则血块类死亡,并且坦克类的血量回复置满。
6、坦克复活:通过键盘监听,检测到我方坦克复活命令后,如果我方坦克处于死亡状态,则将我方坦克存货状态改为活着并且将我方坦克血量回置满血。
实现代码如下:
TankClient.java
ca0sh1Zznhvhr0N7.jpg

zGsWMNGGagloaATt.jpg

JpXtGbVPX9TPHA2P.jpg

Tank.java
OI53Y8fjM0gM8Uz3.jpg

E9uLgG9p9CS0PCG9.jpg

OIDMWTKZ0WWDQkRk.jpg

d2002u88yugKUxmG.jpg

KPFubGyag7dKK53R.jpg

vwDFCjflEfVd2TWR.jpg

Missile.java
FKiz9K5KgAtzab3F.jpg

fh3ii77Qywt3zicd.jpg

t2ss41snD0S9LM2N.jpg

Wall.java
cKfOyZYuX5kFjjJ5.jpg

Explode.java
b13ph15iqHWWZ83y.jpg

独家福利:4月1日-4月3日,关注java梦想微信公众号(ID:bppjava)每日推文得ja va视频教程,先到先得,马上中奖!
Blood.java
qRIaatxK19busS1B.jpg

需要web前端丶大数据丶java丶C语言丶linux丶python教程+PDF电子书的小伙伴

请关注、转发、私信我"资料"就能免费获取教程+电子书。

TDiPWolO2xBiLwBB.jpg

vshYw4ssY7poHYr7.jpg
回复

使用道具 举报

网站地图|页面地图|Archiver|手机版|小黑屋|找资源 |网站地图

GMT+8, 2025-3-9 09:17

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表