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