在java编写坦克大战游戏时,如何判断两辆坦克不能重叠运动,有什么简单的算法

2025-01-05 20:45:24
推荐回答(3个)
回答1:

对于这个小游里面的类的抽象很重要,对坦克及其它类我在这里面就不定义了,其实J2SE的API里面就有关于图形重叠的算法,就是这个intersects()方法,具体伪代码如下:
public boolean collidesWithTanks(java.util.List tanks) {
for(int i=0; i Tank t = tanks.get(i);
if(this != t) {
if(this.live && t.isLive() && this.getRect().intersects(t.getRect())) {
this.stay();
t.stay();
return true;
}
}
}
return false;
}
您可以根据自己的实际需求来改写,在我的百度文库里面有关于“坦克大战”的所有代码,如果有需要我可以把代码发给你,可以通过百度HI联系我。

回答2:

你所用的坦克图片,一般应该是方形或者是长方形的吧.如果是这样的话,就会非常简单.
现有两具矩形:A,B. A比B小,
那么如果A与B相交,或者被B包含,则A的一个顶点必然在B之内.(你可以列举出所有的情况,一定是这样的).
所以,你在判断两矩形是否相交时,可以先判断A的四个顶点是否在B之内(或者边上),再反过来判断B.
这样,两矩形是否重叠的问题,化成判断一点是否在一矩形之内的问题.至于这个问题,细心想一下,是很好判断的.

回答3:

运动的时候进行碰撞检测,如果撞上了就让他在原地待着不前进。
关于碰撞检测的代码网上很多写好了的可以直接拿来用的。你找找。