java制作简单的坦克大战

这篇博客介绍了如何用Java编程语言实现经典的坦克大战游戏,包括Blood、Explode、Missile、Tank、TankWarClient和Wall等核心类的实现。
摘要由CSDN通过智能技术生成
坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象思想的提高,推荐给大家。

详情请参照注释,这里就不多废话了,实现一下儿时的经典而已。

Blood.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package com.hkm.TankWar;
import java.awt.*;
/**
  * 血块类,我方坦克吃了可回血;
  * @author Hekangmin
  *
  */
public class Blood {
   private int x,y,w,h; //血块的位置和宽度高度;
    
   private TankWarClient tc;
    
   private int step= 0 ; //纪录血块移动的步数;
    
   private boolean live= true ;
   public boolean isLive() {
     return live;
   }
  
   public void setLive( boolean live) {
     this .live = live;
   }
     /**
      * 纪录血块的位置;
      */
   private int [][] pos={ { 400 , 300 },{ 400 , 320 },{ 420 , 320 },{ 440 , 300 },{ 440 , 330 },{ 480 , 400 },{ 520 , 400 },{ 540 , 400 }};
         
   public Blood()
   {
     x=pos[ 0 ][ 0 ];
     y=pos[ 0 ][ 1 ];
     w=h= 18 ;
   }
    
   public void draw(Graphics g)
   {
     if (!live) return ;
      
     Color c=g.getColor();
     g.setColor(Color.CYAN);
     g.fillOval(x, y, w, h);
     g.setColor(c);
      
     move();
   }
   /**
    * 移动血块
    */
   public void move()
   {
     step++;
     if (step>=pos.length) step= 0 ;
     else {
     x=pos[step][ 0 ];
     y=pos[step][ 1 ];
     }
   }
    
    
   public Rectangle getRect()
   {
     return new Rectangle(x,y,w,h);
   }
    
    
}

Explode.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.hkm.TankWar;
import java.awt.*;
/**
  * 爆炸类
  * @author Hekangmin
  *
  */
public class Explode {
   private int x,y; //爆炸发生的位置
    
   private boolean Live= true ;
    
   int dia[]={ 4 , 8 , 12 , 16 , 32 , 40 , 20 , 14 , 4 }; //用园模拟,代表圆的直径;
    
   int step= 0 ; //区别移到第几个直径
    
   private TankWarClient tc; //持有引用
    
   public Explode( int x, int y,TankWarClient tc)
   {
     this .x=x;
     this .y=y;
     this .tc=tc;
   }
   public void draw(Graphics g)
   {
     if (!Live)
     {
       tc.explodes.remove( this );
       return ;
     }
     if (step==dia.length) //如果到了最后一个直径爆炸死亡;
     {
       Live= false ;
       step= 0 ;
       return ;
     }
     Color c=g.getColor();
     g.setColor(Color.YELLOW);
     g.fillOval(x, y, dia[step], dia[step]);
     g.setColor(c);
     step++;
   }
    
}

Missile.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package com.hkm.TankWar;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.KeyEvent;
import java.util.List;
/**
  * 子弹类
  * @author Hekangmin
  *
  */
  public class Missile {
     private int x,y; //子弹的位置
     private Tank.Direction dir; //坦克方向
      
     private static final int XSPEED= 10 ; //坦克x方向的移动速度,
     private static final int YSPEED= 10 ; //坦克y方向的移动速度,
      
     public static final int WIDTH= 10 ;
     public static final int HEIGHT= 10 ;
      
     private boolean Live= true ; //判断子弹是否活着
      
     private boolean good; //区分敌军子弹和我军子弹
      
     private TankWarClient tc;
      
   public Missile( int x, int y, Tank.Direction dir) {
     this .x = x;
     this .y = y;
     this .dir = dir;
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
J2SE ( Java 2 Standard Edition)就是Java2的标准版,主要用于桌面应用软件的编程,是伴随着计算机技术的飞速发展而诞生的一项新的开发技术。随着个人电脑的日益普及、Java功能在个人电脑上的实现,Java应用程序产生的单机增值服务逐渐体现出其影响力,对丰富人们的生活内容、愉悦身心、开发智力等起着不可忽视的作用。而随着网络的普及,信息技术的发展,电子竞技也以一种正规的行业逐步走进了人们的生活,特别是对年轻的一代,游戏更是娱乐项目中不可缺少的一种,玩游戏是一种娱乐,其实开发游戏更会使人乐在其中。 局域网坦克大战采用MyEclipse平台开发调试。玩家坦克的运行是通过键盘响应事件控制,敌方坦克则是自动运行并具有了一定的智能性。程序进行了精简和优化,游戏运行流畅,具有一定的吸引力。 论文通过总结和分析JAVA游戏的开发流程和代码框架的设计,开发了一款基于J2SE架构的游戏——局域网坦克大战,该游戏主要分为场景类、子弹类、坦克类、敌方坦克类、我方坦克类等几个类,能够实现敌方坦克和子弹的智能化运行等,具有一定的复杂性和可玩性。 题目:基于J2SE的局域网坦克大战设计与实现 运行平台要求: 1 首先电脑里按有JDK,然后安装MyEclipse。如果没有MyEclipse,只安装JDK也可以。 2 电脑系统Wxp,W7都可以,最好是Wxp 导入工程步骤和运行程序: 1 先讲解用JDK如何运行 (1)找到tank_java里的src文件夹,把src文件夹放到硬盘里,例如是D盘。 (2)开始->运行->cmd->输入d: ->cd src ->cd wyf ->cd cgq ->javac TankServer.java->java TankServer (3)开始->运行->cmd->输入d: ->cd src ->cd wyf ->cd cgq ->javac ClientServer.java->java ClientServer (4)输入用户名和IP等即可游戏。 2 用MyEclipse如何运行 (1)打开Myeclipse->File->import->General->Existing Projects into Workspace->选中Select root directory->单击右边的Browse ->找到Tank_Java,选中,确定->Finish (2)找到src打开->wyf.cgq->鼠标右键TankServer.java->Run As->Java Application (3)找到src打开->wyf.cgq->鼠标右键ClientServer.java->Run As->Java Application (4)输入用户名和IP等即可游戏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值