京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5813|回复: 0

程序员用Java开发坦克大战,网友:神级操作,就问你6不6!

[复制链接]

15

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2019-4-2 06:01:59 | 显示全部楼层 |阅读模式 来自 中国
坦克大战运用到的Java知识:集合、Swing、线程。, \% q, j) f- c$ T* W* q+ P
编程思想:9 E/ d+ a- z) |  D
在主类开启一个线程,没50毫秒循环一次画方法(绘制整个界面内的所有东西)。画的东西有敌我坦克(颜色区分)、子弹、墙、血块、爆炸。所以总共写出了几个类:Tank坦克类、Missile子弹类、Wall墙类、Blood血块类、TankClient主类。在每一个类中均写有画方法实现本类属性的绘制功能。在主类中有键盘监听事件调用这Tank类的键盘监听事件。通过键盘监听判断出对Tank做出相应的移动,而敌方Tank则是随机运动。并且每次刷新都有调用各类的碰撞方法,判断一些不该碰撞的对象的情况时做出处理。而每个对象的创建例如子弹这些是在触发产生之后将新建子弹类加入一个子弹类集合之中,在绘制的时候判断集合中的数量进行绘制,出界或者打死坦克则在集合中删除。其他类也均相似,不在细说。
/ r6 Q7 _" s+ n$ j: [6 l9 H
% \; a# Z3 e9 o" m* U# R6 Z展示一下游戏界面:
! T5 I) m0 [0 P" j+ c* ~; g游戏原理:/ k& K5 ?7 k8 o% r4 m
2 Q" V, Z" R5 I
1、敌我坦克:在坦克类里面有一个布尔类型变量good。用于判断坦克的阵营,在创建坦克对象时在Tank类的构造方法中传入good的值。在画坦克的时候判断good的值,区分敌我坦克的颜色;1 Z8 A4 d9 Y0 v
2、坦克运动:在坦克类里写入了监听键盘摁键的响应事件,对监听到的上下左右键进行记录,并合成坦克移动的八个方向的变量。之后对应每个方向的不同对坦克坐标x,y的值做响应的更改实现我方坦克的移动。而敌方坦克则自动移动,通过随机数对敌方坦克移动方向的随机,并且随机出每次移动的次数。两个随机值相结合即实现了敌方坦克的移动。
: Y9 i/ i. y* N# @% h3、坦克发射子弹:通过键盘监听,检测到发射子弹命令后将主类的子弹类集合中添加一个子弹类。将炮筒的方向以及坦克的位置以及坦克的阵营传入给子弹类,在主类paint画方法中一直循环子弹类集合,如果集合内有子弹,就画出来。这样就实现了发射子弹。
+ k( e3 I" X3 z8 b  L; {4、坦克、子弹、墙的碰撞:在坦克类子弹类墙类中分别getRect方法获取自身的范围,然后在每次画坦克、子弹时都会进行相应的碰撞检测(在坦克类里有与墙和出自己外的坦克相撞的处理方法、在子弹类里有与墙和坦克相碰撞的处理方法。),如果自身与不该碰撞的物体的范围相重合,则代表两物体相撞。+ H3 B8 B0 M' c0 A2 W# H
5、坦克加血:在血块类中有血块与我方坦克相碰撞的处理方法,如果血块范围与坦克范围重合则血块类死亡,并且坦克类的血量回复置满。
+ e2 \. k& T# G/ F6、坦克复活:通过键盘监听,检测到我方坦克复活命令后,如果我方坦克处于死亡状态,则将我方坦克存货状态改为活着并且将我方坦克血量回置满血。/ \$ D4 G6 s2 U2 C* h( N
实现代码如下:
/ }8 F! k  J& lTankClient.java , ~* f% c$ t; p# U" P
Tank.java $ }$ ]3 R, q, j& s. }, ^7 j
Missile.java 8 @6 Q9 z! C. Z4 C6 B

- o6 U$ r; T& t9 C- v- mWall.java( O& S0 U% w* e$ l& r) _
Explode.java
& U& C& f1 ^/ Q/ k# f
; V6 ?- L: T# q" ~& Y独家福利:4月1日-4月3日,关注java梦想微信公众号(ID:bppjava)每日推文得ja va视频教程,先到先得,马上中奖! 0 {/ }. F; k5 n: c" C; f
1 j+ f8 y- T- M  T7 M8 f8 y; X& }2 B
Blood.java
0 \' x, Y% Z" H/ T! m声明:本文内容来源于网络,如有侵权请联系删除
" v! i. C& R" l9 t4 }8 G/ x5 v$ ^: h6 c, f$ [/ C
$ j9 ?. [) Q+ `
来源:http://www.yidianzixun.com/article/0LdDCyye
9 J" Q0 ?, L+ K( {4 }/ Z6 m: j) Z& Y免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

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

×

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2026-3-2 18:31 , Processed in 0.036397 second(s), 24 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2026 Discuz! Team.

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