0

我正在用 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);

        }
    }
}
}
4

3 回答 3

1

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

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

每次进入循环:

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

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

4 - 否则返回

于 2013-04-18T02:26:24.580 回答
0

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

这是一个关于如何定义线程的好教程,oracle 文档显示了一个休眠线程的示例。

于 2013-04-18T00:19:44.790 回答
0

尝试添加

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

where ms- 多少毫秒,例如 1000

于 2013-04-18T00:11:08.207 回答