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 要自己调用
。要做的就这么多、
全部源码点击下载
如果敌方坦克互相碰撞,全部回到移动之前的位置
如果我方坦克和敌方坦克碰撞,我方坦克血量减少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 要自己调用
。要做的就这么多、
全部源码点击下载
相关文章推荐
- TankWar 单机(JAVA版)版本1.7&&版本1.8 坦克死亡的爆炸和画出多个敌方坦克
- TankWar 单机(JAVA版) 版本0.7~版本0.9 让坦克实现八个方向的移动
- TankWar 单机(JAVA版) 版本1.5 画一辆敌方的坦克
- TankWar 单机(JAVA版) 版本0.3 画出坦克
- TankWar 单机(JAVA版) 版本0.4~版本0.6 让坦克动起来
- TankWar 单机(JAVA版) 版本1.0~版本1.4 坦克方向打出多发子弹 并解决子弹不消亡问题
- TankWar 单机(JAVA版)版本1.9 敌军坦克自动移动 自动攻击 及判断边界
- TankWar 单机(JAVA版)版本2.0.5 坦克撞墙的处理
- TankWar 单机(JAVA版) 版本1.6 将敌人坦克击毙
- TankWar 单机(JAVA版)版本2.3~版本2.4 为坦克画血条
- TankWar 单机(JAVA版)优化炮杆和坦克移动方向不一致
- TankWar 单机(JAVA版)版本2.0.1 在地图中加入墙体
- TankWar 单机(JAVA版)版本2.2 超级炮弹
- TankWar 单机(JAVA版) 版本0.1&&版本0.2 显示一个窗口
- 利用XStream在Java对象和XML之间相互转换
- java之文件与base64字符之间的相互转换
- Java中二进制和字符串之间的相互转换
- Java对象与XML文件之间相互转化(含源代码)
- Java中二进制和十进制整数之间相互转换的思考
- java中byte数组与int类型之间的相互转换(两种方式)