Slick2D Java游戏使用方法重载进行冲突

时间:2013-10-29 16:53:09

标签: java overloading collision slick2d

我的所有游戏对象都扩展了一个名为Entity的类,每个实例在创建时都插入ArrayList<Entity>

我的理论是,我能够遍历屏幕上的所有对象,更新它们,并检查它们是否与嵌套循环中的任何其他对象发生碰撞。如果它们发生碰撞,我可以将它们碰撞的物体传递给一个方法onCollide,它根据物体的含义处理碰撞;即;

//Update Game Objects
if(gameObjects.size() > 0){
for(int counter = 0; counter < gameObjects.size(); counter ++){

    //Update every object.
    gameObjects.get(counter).update(gc, sbg, delta, gameObjects);

    //If the object is colliding with another object,
    for(int collisionCounter = 0; collisionCounter < gameObjects.size(); collisionCounter ++){

        if(gameObjects.get(counter).isColliding(gameObjects.get(collisionCounter))){    
            //Execute collision code for both objects.
            gameObjects.get(counter).onCollide(gameObjects.get(collisionCounter));
            gameObjects.get(collisionCounter).onCollide(gameObjects.get(counter));
        }
    }
}
} 

但是,由于我的ArrayList包含“Entity”,Java不允许我重载像;

这样的方法
onCollide(Player player),
onCollide(Enemy enemy)

我想避免使用instanceof,那么有没有办法利用多态来实现这种效果,或者更好的方法来进行碰撞?

[已解决]现在使用名为“type”的String变量来确定对象之间的差异。

0 个答案:

没有答案