java项目之——坦克大战10

    xiaoxiao2025-02-03  11

    实现了坦克的移动,现在要实现坦克可以打出炮弹:

    功能:添加子弹类,添加方法和参数。

    1.位置和方向属性

    int x,y; Tank.Direction dir;

    2.构造方法

    public Missile(int x, int y,Tank.Direction dir) { this.x = x; this.y = y; this.dir=dir; }

    3.画坦克的方法

    public void draw(Graphics g){ Color c = g.getColor(); g.setColor(Color.BLACK); g.fillOval(x, y, 10, 10); g.setColor(c); move(); }4.move方法:

    private void move(){ switch(dir){ case L: x -= XSPEED;break; case LU: x -= XSPEED; y -= XSPEED;break; case U: y -= XSPEED;break; case RU: x += XSPEED;y -= XSPEED;break; case R: x += XSPEED;break; case RD: x += XSPEED;y += XSPEED;break; case D: y += XSPEED;break; case LD: x -= XSPEED;y += XSPEED;break; } }

    设置速度

    public static final int XSPEED =10; public static final int YSPEED =10;

    5.测试:

    在主类里面创建对象

    Tank myTank = new Tank(50, 50); Missile ms = new Missile(100, 100, Tank.Direction.RD); Image offScreenImage = null; public void paint(Graphics g) { ms.draw(g); myTank.draw(g); } 附带子弹类的代码:

    public class Missile { public static final int XSPEED =10; public static final int YSPEED =10; int x,y; Tank.Direction dir; public Missile(int x, int y,Tank.Direction dir) { this.x = x; this.y = y; this.dir=dir; } public void draw(Graphics g){ Color c = g.getColor(); g.setColor(Color.BLACK); g.fillOval(x, y, 10, 10); g.setColor(c); move(); } private void move(){ switch(dir){ case L: x -= XSPEED;break; case LU: x -= XSPEED; y -= XSPEED;break; case U: y -= XSPEED;break; case RU: x += XSPEED;y -= XSPEED;break; case R: x += XSPEED;break; case RD: x += XSPEED;y += XSPEED;break; case D: y += XSPEED;break; case LD: x -= XSPEED;y += XSPEED;break; } } }

    转载请注明原文地址: https://ju.6miu.com/read-1296045.html
    最新回复(0)