AI在Java Game中每n秒执行一次随机操作

时间:2016-03-04 10:10:46

标签: java artificial-intelligence

我正在实施一个游戏,其中敌人AI从预先设定的动作量执行随机动作。 Iv实现了随机动作的执行,但这意味着每次更新游戏都会执行新动作。相反,我希望AI每1秒执行一次动作,例如。怎么做?这是我的随机动作代码:

public class RandomAction implements Controller {
    Action action = new Action();

    @Override
    public Action action() {

        Random rand = new Random();
        action.shoot = rand.nextBoolean();
        action.thrust = rand.nextInt(2);
        action.turn = rand.nextInt(3) - 1;
        return action;
    }

}

1 个答案:

答案 0 :(得分:1)

我假设您的应用程序反复调用不同对象的action()方法,并且您希望每秒只更改一次RandomAction行为,而不是每次调用。你可以这样做:

public class RandomAction implements Controller {
    Action action = new Action();
    Random rand = new Random();
    long updatedAt;

    public RandomAction() {
        updateAction(); // do first init
    }

    @Override
    public Action action() {            
        if (System.currentTimeMillis() - updatedAt > 1000) {
            updateAction();
        }            
        return action;
    }

    private void updateAction() {
        action.shoot = rand.nextBoolean();
        action.thrust = rand.nextInt(2);
        action.turn = rand.nextInt(3) - 1;
        updatedAt = System.currentTimeMillis();
    }
}

如您所见,只有在自上次更新后经过1秒后,才会使用随机值更新操作。更新时间变量设置为此后的当前时间。