我正在做一个othello游戏,我做了一个简单的代码。但是当我运行我的代码时,Ai在我点击之后就运行了,我想要一些延迟,我真的不知道怎么做,正如我所说,它跑得快,我希望艾未未如此运行2秒。
board.artificialIntelligence();
我的方法Ai存储在棋盘类中,我希望它在我的面板类中,顺便说一句,我正在使用NetBeans。
答案 0 :(得分:5)
如果您执行Thread.sleep(TIME_IN_MILLIS)
游戏将在2秒内无响应(除非此代码在另一个线程中运行)。
我能看到的最好的方法是在你的课堂上有ScheduledExecutorService
并将AI任务提交给它。类似的东西:
public class AI {
private final ScheduledExecutorService execService;
public AI() {
this.execService = Executors.newSingleThreadScheduledExecutor();
}
public void startBackgroundIntelligence() {
this.execService.schedule(new Runnable() {
@Override
public void run() {
// YOUR AI CODE
}
}, 2, TimeUnit.SECONDS);
}
}
希望这会有所帮助。欢呼声。
答案 1 :(得分:4)
如果你正在使用Swing,你可以使用Swing Timer在预定义的延迟后调用该方法
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
board.artificialIntelligence();
}
});
timer.setRepeats(false);
timer.start();
答案 2 :(得分:2)
int numberOfMillisecondsInTheFuture = 2000;
Date timeToRun = new Date(System.currentTimeMillis()+numberOfMillisecondsInTheFuture);
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
board.artificialIntelligence();
}
}, timeToRun);
答案 3 :(得分:0)
使用Thread.sleep(2000)
等待两秒
答案 4 :(得分:0)
Thread.sleep导致当前线程暂停执行a 指定期限。
在你的情况下:
Thread.sleep(2000); // will wait for 2 seconds
答案 5 :(得分:0)
在您的代码致电之前
try {
Thread.sleep(2000);
} catch(InterruptedException e) {}
答案 6 :(得分:0)
使用此代码等待2秒钟:
long t0,t1;
t0=System.currentTimeMillis();
do{
t1=System.currentTimeMillis();
}while (t1-t0<2000);
答案 7 :(得分:0)
如果您不希望主线程被阻塞,请启动一个等待2秒的新线程然后进行调用(然后死掉),如下所示:
new Thread(new Runnable() {
public void run() {
try {
Thread.sleep(2000);
} (catch InterruptedException e) {}
board.artificialIntelligence();
}
}).start();