监控键盘,当按键ctrl就要发射一个子弹,代码如下:
@Override
public void keyReleased(KeyEvent keyEvent) {
int key = keyEvent.getKeyCode();//获取按键的ASC码。根据ASC来控制按键
switch (key) {
case KeyEvent.VK_LEFT://如果是按左键 坦克向左移动10像素
bl = false;
break;
case KeyEvent.VK_UP://如果是按左键 坦克向左移动10像素
bu = false;
break;
case KeyEvent.VK_RIGHT://如果是按左键 坦克向左移动10像素
br = false;
break;
case KeyEvent.VK_DOWN://如果是按左键 坦克向左移动10像素
bd = false;
break;
case KeyEvent.VK_CONTROL:
myTank.fire();
break;
default:
break;
}
setMainTankDir();//设置主坦克方向
}
故在Mytank类中定义fire方法。
如何把子弹跟坦克关联起来来,我们发现子弹和坦克都在TankFrame类中,所以将TankFrame类传递给坦克就可以拿到子弹了。代码如下:
private TankFrame tankFrame = null;
public void fire() {
tankFrame.b=new Bullet(this.x,this.y,this.dir);
}
Tank myTank = new Tank(200, 200, Dir.DOWN,this);