坦克大战问题:子弹方向跟坦克方向一致,那比如坦克向右发射一个子弹后,坦克向下转。那刚才发射的子弹为什么没有向下转?
这是马士兵老师的代码,我想到他在课上说有不懂的上这问,第一次问问题 谢谢大家
public void keyPressed(KeyEvent e){
int key = e.getKeyCode(); //取得按下键的虚拟码
switch(key) {
case KeyEvent.VK_CONTROL:
tc.m = fire(); //持有对方引用来访问对方的成员变量,此时对方的m就有值了
break;
case KeyEvent.VK_LEFT :
bL = true;
break;
case KeyEvent.VK_UP :
bU = true;
break;
case KeyEvent.VK_RIGHT :
bR = true;
break;
case KeyEvent.VK_DOWN :
bD = true;
break;
}
locateDirection();
}
void locateDirection(){
if(bL && !bU && !bR && !bD) dir = Direction.L;
else if(bL && bU && !bR && !bD) dir = Direction.LU;
else if(!bL && bU && !bR && !bD) dir = Direction.U;
else if(!bL && bU && bR && !bD) dir = Direction.RU;
else if(!bL && !bU && bR && !bD) dir = Direction.R;
else if(!bL && !bU && bR && bD) dir = Direction.RD;
else if(!bL && !bU && !bR && bD) dir = Direction.D;
else if(bL && !bU && !bR && bD) dir = Direction.LD;
else if(!bL && !bU && !bR && !bD) dir = Direction.STOP;
}
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode(); //取得按下键的虚拟码
switch(key) {
case KeyEvent.VK_LEFT :
bL = false;
break;
case KeyEvent.VK_UP :
bU = false;
break;
case KeyEvent.VK_RIGHT :
bR = false;
break;
case KeyEvent.VK_DOWN :
bD = false;
break;
}
locateDirection();
}
public Missile fire(){
int x = this.x+Tank.WIDTH/2-Missile.WIDTH/2;
int y = this.y+Tank.HEIGHT/2-Missile.HEIGHT/2;
Missile m = new Missile(x,y,ptdir);
return m;
}