gpt4 book ai didi

java - while 循环中的 Thread.sleep() 无法正常工作?

转载 作者:行者123 更新时间:2023-12-01 08:15:51 30 4
gpt4 key购买 nike

该对象应该每 5 秒改变一次模式(移动算法)。我首先尝试使用 while 循环,但循环迭代速度太快。然后我添加了 Thread.sleep(5000) 但我的对象仍然仅以一种算法移动 (scatterMode)。算法如下:

//LEVEL 1
//scatter for 7s
//chase for 20s
//scatter for 7s
//chase for 20s
//scatter for 5s
//chase for 20s
//scatter for 5s
//chase indefinite

这是代码。如果您需要查看构造函数和变量声明,它们位于底部。

public void updateMode() throws InterruptedException {  
while(ghostalive){
if(seconds<7){
Thread.sleep(100);
mode = scatterMode;
}
if(7<seconds && seconds<27){
Thread.sleep(5000);
mode = chaseMode;
}
if(27<seconds && seconds<34){
Thread.sleep(5000);
mode = scatterMode;
}
if(34<seconds && seconds<54) {
Thread.sleep(5000);
mode = chaseMode;
}
if(54<seconds && seconds>59) {
mode = scatterMode;
}
if(59< seconds && seconds<79){
mode = chaseMode;
}
if(seconds>84){
mode = scatterMode;
ghostalive=false;
}
seconds++;
ghostalive=false;
}
}

private int seconds=0;
private boolean ghostalive=true;

protected static final int chaseMode = 0;
protected static final int scatterMode = 1;

static int mode = scatterMode; //initially ghost start in scatterMode

public Ghost(int x, int y, Maze maze) throws InterruptedException{
super(x, y, maze);
futureDirection = 0;
timer = 0;
updateMode();
//chaseMode = false;
//frightenedMode = false;
}

public static int getMode(){
return mode;
}

最佳答案

您的 sleep 模式是毫秒和几秒的混合,但您希望计算秒数。

尝试这样的事情:

while(ghostalive){

if(seconds<7){
mode = scatterMode;

}

if(7<seconds && seconds<27){
mode = chaseMode;
}

if(27<seconds && seconds<34){
mode = scatterMode;
}

if(34<seconds && seconds<54) {
mode = chaseMode;
}

if(54<seconds && seconds>59) {
mode = scatterMode;
}

if(59< seconds && seconds<79){
mode = chaseMode;
}

if(seconds>84){
mode = scatterMode;
ghostalive=false;
}

seconds++;
Thread.Sleep(1000);//Sleep for one second only

//ghostalive=false; // Should this be here? Ghost is set to not alive after each loop?
}

我已将 sleep 移到 if 语句之后,以便它在每个循环中保持一致。

关于java - while 循环中的 Thread.sleep() 无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13402703/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com