gpt4 book ai didi

java - Thread.sleep 似乎非常不一致

转载 作者:行者123 更新时间:2023-12-02 11:42:27 27 4
gpt4 key购买 nike

下面的这个方法试图将 Sprite 移动到“ block ”迷宫中,我需要它每隔一段“步骤”等待一次,然后再次移动并重新绘制,但这种方法只会导致这个家伙永远需要移动,然后传送到需要的目的地。

我的 sleep 方法有什么问题吗?

public void rightClick() {
while(select.x != mouseConverter(mouseX) && select.y != mouseConverter(mouseY)) {
int[][] path = select.ai().getPath(arena, mouseConverter(mouseX), mouseConverter(mouseY), blocked);
select.move(path[0][0], path[0][1]);
repaint();
try {
Thread.sleep(1000);
} catch(InterruptedException ex) {
System.out.println("Inturrupted");
Thread.currentThread().interrupt();

}
}
}

这可能需要大量澄清,所以如果这非常令人困惑,请原谅我。

最佳答案

好的,谢谢 @VGR 向我提示有关 AWT/Swing 的问题,尽管最终我相信这是我的一个比较器错误。这是更新后的代码:

public void rightClick() {
TimerTask task;

task = new TimerTask() {
@Override
public void run() {
System.out.println("X: " + mouseConverter(mouseX) + " Y: " + mouseConverter(mouseY));
System.out.println("SX: " + select.x + " SY: " + select.y);
if (select.x != mouseConverter(mouseX) || select.y != mouseConverter(mouseY)) {
int[][] path = select.ai().getPath(arena, mouseConverter(mouseX), mouseConverter(mouseY), blocked);
select.move(path[0][0], path[0][1]);
repaint();
}
else {
cancel();

}
}
};
timer.schedule(task, 0, ANIMATION_DELAY);

}

在我更新代码以使用计时器后,我遇到了以下问题:如果 X 值或 Y 值与 Sprite 的 X 或 Y 值相同,我将无法移动。经过一个小时的工作,主要问题不只是定时器,还有我的比较器错误,共同努力做出了完美的问题。

关于java - Thread.sleep 似乎非常不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453128/

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