上一版本设置了炮筒,使得坦克静止时也可以打出炮弹。但是还有 一个小问题,每次只能打出一发子弹,子弹会被覆盖。
本版本:使坦克可以打出多发子弹。
1.我们用什么来制造多发子弹:集合or 数组 这里选择集合。
List<Missile> missiles = new ArrayList<Missile>(); //泛型 删加 效率相对高
2.画方法中画出多个子弹,在发射类中增加子弹
g.drawString("missiles count:"+missiles.size(), 10,50);
for (int i = 0; i < missiles.size(); i++) {
Missile m = missiles.get(i);
m.draw(g);
}
public Missile fire(){
int x=this.x+Tank.WIDTH/2-Missile.HEIGHT/2;
int y=this.y-Missile.WIDTH/2+Tank.HEIGHT/2;
Missile m = new Missile(x, y, ptDir);
tc.missiles.add(m); //增加
return m;
}
3.抬起时发射子弹fire()
public void keyReleased(KeyEvent e) {
int key = e.getKeyCode();
switch(key){
case KeyEvent.VK_CONTROL: fire(); break; //避免坦克发射子弹过快
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();
}
总结:打出多发子弹使用了集合,arrayList.也有泛型的使用。
下一个版本:坦克和炮弹出界应该考虑的问题。