2011-11-22 179 views
0

我目前正在为我的编程课程制作一款Reversi游戏,并且我想尝试在游戏中实现一台计算机。我成功地完成了这项工作,但是计算机立即执行,因此您无法看到您的移动是如何运作的。改变按钮的颜色太慢

我尝试用下面的方法解决这个:

public void wait (int n) { 
    long t0, t1; 
    t0 = System.currentTimeMillis(); 
    do { 
     t1 = System.currentTimeMillis(); 
    } while ((t1-t0) < n); 
} 

我然后调用此方法后,玩家提出他们的行动,对之前叫我computerAI()方法。

然而,它并没有很好的工作,它似乎在它改变棋盘的颜色之前就已经等待了,因为玩家点击了,背景变成了默认的浅灰色,然后等待了其次,它执行你的移动和电脑的颜色变化。

任何人有任何建议来解决这个问题?

+0

但是你的重绘代码在哪里?你可以把它粘贴吗? – 9000

回答

0

用途:

Thread.sleep(5000); 

这导致当前线程5秒入睡。

+0

这会导致完全相同的问题。 – Aaronneyer

0

您可能不仅需要更改按钮的颜色属性,还需要经常调用其​​.repaint()或甚至.update()方法,例如,每100毫秒。也就是说,当你需要时,你需要让按钮在画面上重新绘制自己,而不是当系统确定有时间来呈现累积的变化时。

+0

当我改变按钮的颜色时,我已经调用了repaint,但是我刚刚尝试在直接调用computerAI()之前直接调用wait(1000)之前添加一个在每个按钮上再次调用repaint的循环。 对于这个类,我创建了一个名为CircleButton的自定义按钮类。这里是代码为: http://pastebin.com/CtgXWEe2 这是使移动和调用changeColor的代码。阅读起来很简单,但简而言之,它会找出方向,它想要改变,并改变颜色。然后它完成所有工作,等待并调用AI。 – Aaronneyer

+0

忘记粘贴第二个链接,然后耗尽时间编辑: http://pastebin.com/NvJSPp4L – Aaronneyer