Java.坦克大战小游戏【0.7】

任务

代码
将坦克的一些属性,如产生地点,窗口大小,和一些方法,比如如何画出坦克,对键盘事件的处理打包,重新创建出一个 Tank 类,用来封装坦克信息

import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;

public class Tank {
    public static final int TANK_WIDTH = 30;
    public static final int TANK_HEIGH = 30;
    int x,y;
    int GAME_WIDTH,GAME_HEIGH;

    public Tank(int x, int y,int GAME_WIDTH,int GAME_HEIGH) {
        super();
        this.x = x;
        this.y = y;
        this.GAME_WIDTH = GAME_WIDTH;
        this.GAME_HEIGH = GAME_HEIGH;
    }

    public void draw(Graphics g) {
        Color c = g.getColor();
        g.setColor(Color.BLUE);
        g.fillOval(x, y, TANK_WIDTH, TANK_HEIGH);
        g.setColor(c);
    }

    public void keyPress(KeyEvent e) {
        //获得按键虚拟码
        int key = e.getKeyCode();
        switch(key) {
        case KeyEvent.VK_RIGHT:
            if(x < GAME_WIDTH-TANK_WIDTH-10)
                x = x + 5;
            break;
        case KeyEvent.VK_LEFT:
            if(x > TANK_WIDTH)
                x = x - 5;
            break;
        case KeyEvent.VK_DOWN:
            if(y < GAME_HEIGH-TANK_HEIGH-10)
            y = y + 5;
            break;
        case KeyEvent.VK_UP:
            if(y > TANK_HEIGH+10)
            y = y - 5;
            break;
        }
    }
}

创建 Tank 实例,将原来画坦克和处理按键的地方,将画笔和事件传递给 Tank 类让其自己处理即可

    public void paint(Graphics g) {
        super.paint(g);
        myTank.draw(g);
    }
private class keyMonitor extends KeyAdapter{

        public void keyPressed(KeyEvent e) {
            myTank.keyPress(e);
        }

    }

总结
1.应用面向对象编程思想,针对一个一个的类进行处理,不必关心类的内部是如何进行的

猜你喜欢

转载自blog.csdn.net/liyuanyue2017/article/details/80234282