2011-11-22 216 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