1
對不起,我的英語不好,不是母語。我正在GUI上開發一個JavaSimonSays遊戲。我新編碼。我設法讓應用程序在控制檯上工作,但是它使圖形工作變得非常混亂。程序將生成的序列(secuenciaSimon)的LinkedLists與用戶通過按鈕(secuenciaUsuarioGUI)輸入的序列進行比較,但問題在於通過單擊任何按鈕來調用比較方法,以便生成的序列由simon大於由用戶介紹的那個。在Java Swing中等待多個按鈕輸入
黃色按鈕代碼
private void bAmarilloMousePressed(java.awt.event.MouseEvent evt) {
secuenciaUsuarioGUI.add(3); //Adds the selection to the LinkedList yellow=3
System.out.println("Secuencua Usuario GUI:" + secuenciaUsuarioGUI.toString());
comparaSecuencia();
generaSecuencia(); //Adds another value to the LinkedList
}
比較碼
public boolean comparaSecuencia(){
for (int i = 0; i < secuenciaSimon.size(); i++) {
//Here the pause should be
if(secuenciaSimon.get(i) != secuenciaUsuarioGUI.get(i)){
System.out.println("Not equal");
return false;
}
}
System.out.println("Equal");
puntuacion += 100; //Score
secuenciaUsuarioGUI.clear(); //Clears the LinkedList From the user
return true;
}
TL; DR 需要運行更多的代碼,而無需凍結程序之前等待GUI上的按鈕的 「N」 的投入。
感謝
聽起來不錯,但我希望能夠在比較三個按鈕之前進行比較。例如,如果序列是紅色>藍色>藍色,並且我輸入藍色>藍色,程序是否會等到最後一個按鈕,或者由於按下的第一個按鈕與序列不同,因此將其視爲假? – Franco 2013-05-05 20:17:18
@Fravo:那麼你必須將這個邏輯編碼到你的程序中。但關鍵是你必須讓你的代碼**事件驅動**。您並未創建線性控制檯程序,因此以前在for循環中的代碼不再位於for循環中,而是在發生事件時增加計數器或更改對象的狀態,然後對狀態變化作出反應。 – 2013-05-05 20:19:04
謝謝你,我設法通過實現你的代碼示例並使用userSecuence.size添加一個額外的比較器來解決它。祝你有美好的一天。 – Franco 2013-05-05 20:32:27