因为开始设计坦克的时候玩家的坦克是黄色,电脑的坦克是蓝色,他们多对应的子弹颜色也应该是一致的,可是开始时候我的玩家的坦克是黄色的,打出来的子弹是蓝色的,代码如下:
public void paint(Graphics g) {
super.paint(g);
//设置图象的背景颜色
g.fillRect(0, 0, 600, 400);
//画出自己的坦克
this.drawTank(hero.getX(), hero.getY(), g, hero.direct, 1);
//画出敌人的坦克
for (int i = 0; i < ets.size(); i++) {
EnemyTank et = ets.get(i);
this.drawTank(et.getX(), et.getY(), g, et.getDirect(), 0);
}
//从ss中取出每颗子弹,并画出
for (int i = 0; i < hero.ss.size(); i++) {
Shot myShot = hero.ss.get(i);
//画出一颗子弹
if (myShot != null && myShot.isLive == true) {
g.draw3DRect(myShot.x, myShot.y, 1, 1, false);
}
//删除符合条件的子弹
if (myShot.isLive == false) {
//从ss中删掉该子弹
hero.ss.remove(myShot);
}
}
}
后面发现我把自己坦克的子弹代码放在了敌方坦克代码的后面,导致己方坦克的黄色被敌方坦克的蓝色所覆盖,从而子弹变成了蓝色,修改后的代码如下
public void paint(Graphics g) {
super.paint(g);
//设置图象的背景颜色
g.fillRect(0, 0, 600, 400);
//画出自己的坦克
this.drawTank(hero.getX(), hero.getY(), g, hero.direct, 1);
//从ss中取出每颗子弹,并画出
for (int i = 0; i < hero.ss.size(); i++) {
Shot myShot = hero.ss.get(i);
//画出一颗子弹
if (myShot != null && myShot.isLive == true) {
g.draw3DRect(myShot.x, myShot.y, 1, 1, false);
}
//删除符合条件的子弹
if (myShot.isLive == false) {
//从ss中删掉该子弹
hero.ss.remove(myShot);
}
}
//画出敌人的坦克
for (int i = 0; i < ets.size(); i++) {
EnemyTank et = ets.get(i);
this.drawTank(et.getX(), et.getY(), g, et.getDirect(), 0);
}
}
这样坦克的子弹就与坦克是同一个颜色了