任务
代码
和控制上下左右键一样,当按下 Ctrl 键发射子弹,也就是说,每次按下 Ctrl 键 new 一个子弹出来,即在 KeyPress() 监听器中对 Ctrl 进行监听
case KeyEvent.VK_CONTROL: tc.m = fire();break;
创建 fire() 类,由于要让炮弹在坦克正中间打出,可以计算出,new 出的子弹的位置是,坦克的 (x,y) 坐标加上坦克的一半宽和高度,再减去子弹自身的宽和高度
public Missile fire() {
int x = this.x + Tank.TANK_WIDTH/2 -Missile.MISSILE_WIDTH/2;
int y = this.y + Tank.TANK_HEIGH/2 -Missile.MISSILE_HEIGH/2;
return new Missile(x,y,dir);
}
最后在 Tank 类中拿到 TankClient 类的引用,借助其 paint() 方法画出子弹
TankClient tc;
public Tank(int x,int y,TankClient tc) {
this(x,y);
this.tc = tc;
}