坦克大战

Deadly 提交于 2019-11-28 19:21:44

坦克类的设计

创建一个坦克的类

  • 考虑坦克的属性(位置、方向、速度)
  • 其中方向采用枚举(上、下、左、右)
  • 加载坦克的图片
  • 接受按键的触发,使坦克根据人的控制来动

代码实现

方向枚举

123
Enum Direction {    UP, DOWN, LEFE, RIGHT}

图片资源类(例如坦克图片)

12345678910111213
public class  {    public static BufferedImage goodTankU, goodTankD, goodTankR, goodTankL;    static{        try {            goodTankU = ImageIO.read(Tank.class.getClassLoader().getResourceAsStream("images/p1tankU.gif"));            goodTankD = ImageIO.read(Tank.class.getClassLoader().getResourceAsStream("images/p1tankD.gif"));            goodTankL = ImageIO.read(Tank.class.getClassLoader().getResourceAsStream("images/p1tankL.gif"));            goodTankR = ImageIO.read(Tank.class.getClassLoader().getResourceAsStream("images/p1tankR.gif"));        } catch(IOException e){            e.printStackTrace();        }    }}

坦克类

123456789101112131415161718192021222324252627282930
    2):监听键盘按下    3):监听键盘抬起*/public class Tank {    private static final int SPEED = 5; // 坦克的速度    private int x, y; //坦克的初始位置    private Direction direction; // 坦克的方向        public Tank(int x, int y, Direction direction){        this.x = x;        this.y = y;        this.direction = direction;    }        // 1):得到窗口传递的画笔,绘制自己    public void paint (Graphics g) {        g.drawImage(ImagesResource.goodTankD, x, y, null);    }        // 2):监听键盘按下    public void keyPressed(KeyEvent e) {			    }    // 3):监听键盘抬起    public void keyReleased(KeyEvent e) {			    }}

运行结果

窗口增加键盘和窗口监听

  • 在游戏窗口类构造器中见添加监听,并把监听信号选择性的传给坦克对象
  • 敌方坦克不需要监听信号,自己的坦克需要。
  • 窗口监听,来关闭进程(点击上方X,进行关闭进程)

12345678910111213141516171819202122232425262728
// GameFrame的构造器增加监听public GameFrame (){    .    . //省略 .....    .    // 键盘监听    this.addKeyListener(new KeyAdapte(        	public void keyPressed(KeyEvent e) {            myTank.keyPressed(e);	}	@Override	public void keyReleased(KeyEvent e) {		myTank.keyReleased(e);	}            ));        // 窗口监听    this.addWindowListener(new WinodowAdapte(){        @Override	public void windowClosing(WindowEvent e) {            // 关闭进程            System.exit(0);        }    })}

原文:大专栏  坦克大战


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!