JAVA零基础――坦克大战(上)

2014-11-24 00:45:01 · 作者: · 浏览: 0

花了一整天看了马士兵老师讲的坦克大战单机版的视频,作为一名java初学者来说,收获颇多,

尤其是感受到面向对象的方法,特此总结一下,以备后用。

(最后会附整体代码,及详细注释)说明一下,此小游戏只是熟悉java基础只是而已,谈不上项目...大牛忽视之即可~

截止此时已经实现的功能是:画出了一辆坦克,可以八个方向灵活移动,按CTRL建可以发射炮弹 。

《第一阶段》做出界面:练习GUI基础知识

该阶段代码

   
1 import java.awt. * ;
2 import java.awt.event. * ;
3
4 public class TankClient extends Frame {
5
6 public void lauchFrame() {
7 this .setLocation( 400 , 300 ); // 设定初始位置
8 this .setSize( 800 , 600 ); // 设定大小
9 this .setTitle( " TankWar " ); // 设定标题
10 this .addWindowListener( new WindowAdapter() {
11 public void windowClosing(WindowEvent e) {
12 System.exit( 0 );
13 }
14 }); // 匿名类实现窗口关闭
15 this .setResizable( false ); // 使窗口固定
16 setVisible( true ); // 将窗口显示出来
17 }
18
19 public static void main(String[] args) {
20 TankClient tc = new TankClient();
21 tc.lauchFrame(); // 启动窗口
22 }
23
24 }

《第二阶段》画出一辆坦克,并实现四个方向的移动:此阶段写完后实现了,坦克根据键盘控制进行四个方向的移动,但是运动不灵活。

(1)重写paint方法,画出代表坦克的实心圆。paint()方法在每次窗口被激活会自动调用,repaint()方法也会自动调用paint()方法。

此部代码    

   
1 public void paint(Graphics g) { // g相当于一个画笔
2 Color c = g.getColor(); // 拿到当前颜色,以便恢复
3 g.setColor(Color.RED);
4 g.fillOval(x, y, 30 , 30 ); // 画一个圆
5 g.setColor(c); // 恢复为初始颜色
6 }

   (2)让坦克运动起来。其实初想感觉很简单,按一下方向键,改变一下x,y的值,如x+=5,y+=5,然后再重画一下,不就可以实现坦克的移动了吗?但是如果按一次键,才重新画一下的话,动