任务
代码
首先得确定,炮弹是否击中坦克,肯定就要比较炮弹的矩形范围和坦克的矩形范围,借助 Rectangle 实现
在 Missile 类中:
//获得子弹的矩形区域
public Rectangle getRect() {
return new Rectangle(x,y,MISSILE_WIDTH,MISSILE_HEIGH);
}
//判断是否击中坦克
public boolean hitTank(Tank t) {
if(this.getRect().intersects(t.getRect()) && t.isLive()) {
t.setLive(false); //当被击中,坦克死去
this.live = false; //子弹也死去
return true;
}
return false;
}
在 Tank 类中也加一个
//获得坦克的矩形区域
public Rectangle getRect() {
return new Rectangle(x,y,TANK_WIDTH,TANK_HEIGH);
}
同时定义确定坦克是否还活着的 live 布尔变量、和其相应的 set/get 方法
private boolean live = true;
public boolean isLive() {
return live;
}
public void setLive(boolean live) {
this.live = live;
}
重构 draw() 方法,当子弹和坦克 live 值为 false ,直接不画
最后 paint() 方法,调用 getRect() 方法,判断子弹与坦克的情况