图形化表示主战坦克的生命值
a.我们在坦克里面创造内部类:
private BloodBar bb= new BloodBar();
b.根据不同 的life值来显示,吧它放在坦克的上面。
private class BloodBar{
public void draw(Graphics g){
Color c = g.getColor();
g.setColor(Color.RED);
g.drawRect(x, y-10, WIDTH, 10);
int w = WIDTH*life/100;
g.fillRect(x, y-10, w, 10);
g.setColor(c);
}
}
c.画出血条
public void draw(Graphics g) {
if(!live){
return;
}
Color c = g.getColor();
if(good){
g.setColor(Color.RED);
}
else{
g.setColor(Color.blue);
}
g.fillOval(x, y, WIDTH, HEIGHT);
g.setColor(c);
bb.draw(g); //画出血条
switch(ptDir){
case L: g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x, y+Tank.HEIGHT/2);break;
case LU:g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x, y);break;
case U: g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH/2, y);break;
case RU:g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH, y);break;
case R: g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH, y+Tank.HEIGHT/2);break;
case RD:g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH, y+Tank.HEIGHT);break;
case D: g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x+Tank.WIDTH/2, y+Tank.HEIGHT);break;
case LD:g.drawLine(x+Tank.WIDTH/2, y+Tank.HEIGHT/2, x, y+Tank.HEIGHT);break;
}
move();
}