任务
代码
添加 Dirction 类型的炮筒方向
private Direction ptDir = Direction.D;
每次坦克移动后,只要不是 STOP ,炮筒方向随坦克方向一起移动,即在坦克定位方法 locateDirction() 添加
if(this.dir != Direction.STOP)
this.ptDir = this.dir;
再画出炮筒,增加方法,在 draw() 方法中调用,并传画笔给它
//画出炮筒
public void drawPt(Graphics g) {
switch(ptDir) {
case U:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x + TANK_WIDTH/2, y);break;
case D:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x + TANK_WIDTH/2, y + TANK_HEIGH);break;
case L:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x, y + TANK_HEIGH/2);break;
case R:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x + TANK_WIDTH, y + TANK_HEIGH/2);break;
case UL:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x, y);break;
case UR:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x + TANK_WIDTH, y);break;
case DR:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x + TANK_WIDTH, y + TANK_HEIGH);break;
case DL:g.drawLine(x + TANK_WIDTH/2, y + TANK_HEIGH/2, x, y + TANK_HEIGH);break;
}
}
最后,fire() 方法中,new 出来的新坦克方向由 dir 改为 ptDir
总结
1.模拟一个炮筒出来,炮筒的方向是上一次移动的方向
2.炮筒方向和坦克方向类似,只是没了 STOP 的值