我正在用Java开发游戏,我想创建一个随机移动的角色。 我做的那个很痉挛。 我基本上想在生成的随机数之间添加延迟。 我是一个初学者,所以不要判断我的代码大声笑

public class Monster extends Entity{

private World world;

Image monster;

public Monster(int x, int y, World world) {
        super(x, y, world);
        w = 32;
        h = 32;
        this.world = world;
}

public void render(GameContainer gc, Graphics g) throws SlickException{
        super.render(gc, g);
        monster = new Image("gfx/world/monster.png");
        g.drawImage(monster, x, y);
}

public void update(GameContainer gc, int delta) throws SlickException{
    super.update(gc, delta);
    Random move = new Random();
    int number;

    for(int counter=1; counter<=1;counter++){
        number = move.nextInt(4); 
        System.out.println(number);


        if(number == 0){
            setDy(-1);
        }else if(number == 1){
            setDx(-1);
        }else if(number == 2){
            setDy(5);   
        }else if(number == 3){
            setDx(5);
        }else{
            setDx(0);
            setDy(0);

        }
    }
}
}

===============>>#1 票数:1

这是在游戏上使用的具有不同更新和渲染速率的常用技术。 您要做的是(伪代码示例):

1-初始化时间变量-DateTime lastUpdate = new DateTime();

每次您进入循环时:

2-检查是否经过了某个时间-lastUpdate.hasPassed(X_TIME,new DateTime());

3-如果时间已过去(最后一行为true),则lastUpdate = new DateTime();

4-其他返回

===============>>#2 票数:0

尝试添加

 try {
      Thread.sleep(ms);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

其中ms多少毫秒,例如1000

===============>>#3 票数:0

您需要将NPC运动封装在单独的线程中,并在该线程中调用thread.sleep来暂停运动。

这是有关如何定义线程的很好的教程,并且oracle docs显示了一个休眠线程的示例。

  ask by user2292961 translate from so

未解决问题?本站智能推荐: