所以我正在做一个使用人工智能的井字游戏项目,我想做出一个选项,这样你就可以重玩游戏来看看上一轮发生了什么,我的意图是让重播与实际玩的一样现在,这意味着在显示每个 Action 之后都会有一个延迟,然后下一个 Action 就会发生。并且不是按预期工作,延迟只是一次全部进行,没有任何事情发生,直到突然整个游戏就显示出来了无论如何,被显示为游戏,但作为结束屏幕,这是代码:
replayMode=true;
setStatus("Replay Playing...");
ifButtonsEnabled(true);
initBoard();
int turn=0;
Move current;
for(int i=0;i<replayer.getSizeOfVect();i++)
{
current=replayer.getMoveAt(i);
if(i%2==0)
{
buttons[current.getI()][current.getJ()].setText("X");
}
else
{
buttons[current.getI()][current.getJ()].setText("O");
}
try {
Thread.sleep(650);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
setStatus("Replay ended.");
replayMode=false;
最佳答案
通常,当您在 GUI 程序中看到这种效果时,这是因为您需要将控制权交还给 GUI 线程的事件循环才能发生任何绘图。我建议使用间隔为 650 毫秒的计时器,并在计时器的每次滴答时执行一个“步骤”动画,而不是 Thread.sleep
。
关于java - 延迟无法正常工作,而是在长时间延迟后执行所有操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746424/