您的位置:首页 > 编程语言 > Java开发

TankWar 单机(JAVA版)版本2.1 坦克之间不能相互穿越

2016-10-10 23:02 267 查看
首先说明:

如果敌方坦克互相碰撞,全部回到移动之前的位置

如果我方坦克和敌方坦克碰撞,我方坦克血量减少30,敌方坦克死亡

运行结果:



代码:

首先是tankHitTanks(Tank)方法

// 坦克撞击坦克事件
public boolean tankHitTanks(Tank tank) {
// 两个坦克相撞
if (this.getRec().intersects(tank.getRec())) {
// 如果敌方坦克和我方坦克相撞 我方坦克掉血30,敌方坦克死亡
if (this.isGood() != tank.isGood()) {
if (tank.isGood()) {
tank.setLive(tank.getLive() - 30);
if (tank.getLive() <= 0) {
tank.setbLive(false);
}
this.setLive(0);
this.setbLive(false);
} else {
this.setLive(this.getLive() - 30);
if (this.getLive() <= 0) {
this.setbLive(false);
}
tank.setLive(0);
tank.setbLive(false);
}
}
// 如果敌方坦克相撞 回到碰撞前的位置
else {
x = oldX;
y = oldY;
tank.setX(tank.getOldX());
tank.setY(tank.getOldY());
}
return true;
}
return false;
}

然后就是调用这个方法了,什么时候呢?坦克移动的时候,也就是Tank类的move方法中,在坦克移动后调用。
for (Tank t : TankClient.enemyTanks) {
//如果这个坦克等于自己 不判断
if (this == t)
continue;
if (tankHitTanks(t)) {
break;
}
}
if (this != TankClient.myTank) {
tankHitTanks(TankClient.myTank);
}

一定不要忘记这句啊
if (this == t)
continue;

起初我就是忘记了  敌方坦克一直原地打转。。
自己和自己肯定是一直相交的嘛

还有enemyTanks这个集合里面没有myTank  要自己调用

。要做的就这么多、

 全部源码点击下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: