我正试图创造一个鼹鼠游戏。我使用swing来创建背景并添加鼹鼠图像与事件监听器,每次点击时都会增加分数,但我在设置是否应该可见时遇到问题。我认为最好的方法是使用计时器来设置/重置布尔值。然后可以将此布尔值传递给图像的setVisible()构造函数。随机化图像可见的周期将是理想的。我试图实例化一个计时器和任务(继承timertask)类,调用timer.vis(vis),它应该重置布尔值,然后将任务传递给timer.schedule(),但我得到一个空指针异常。我是以错误的方式解决这个问题吗?
答案 0 :(得分:0)
好吧,这将随机间隔翻转一下。您可以添加代码以在SwingWorker线程中调用某些内容,具体取决于更改后的位值。
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.atomic.AtomicBoolean;
public class RandomBitFlip {
public static void main(String[] args) throws InterruptedException {
final AtomicBoolean var = new AtomicBoolean(false);
final Timer timer = new Timer(true);
randomlyFlip(timer, var);
// To demonstrate, print the value every 200ms
for(int x = 0; x < 300; x++) {
System.out.println(var.get());
Thread.sleep(200);
}
}
private static void randomlyFlip(final Timer timer, final AtomicBoolean var) {
final TimerTask task = new TimerTask() {
@Override
public void run() {
var.set(!var.get());
// Call SwingWorker thread here
randomlyFlip(timer, var);
}
};
timer.schedule(task, 500 + (long)(1500 * Math.random()));
}
}