实现了坦克的移动,现在要实现坦克可以打出炮弹:
功能:添加子弹类,添加方法和参数。
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; } } }