2015-10-12 134 views
-1

我正在開發一個像Simons說的「遊戲」。我有七個聲音在一個JFrame驗證按下按鈕

我需要重現例如「做」的說明,然後用戶必須按相同的音符。應用程序必須重新生成「執行」註釋然後「重新」,並且用戶必須按該順序按相同的註釋。 所以我創建了一個開始按鈕,並且第一個聲音將在幾秒鐘後被複制... 我的疑問是,如何驗證用戶按下的按鈕是否已響起按鈕?

這是啓動按鈕的代碼:

private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     //delay the sound 
     Thread.sleep(2000); 
     sonido("do"); 
     //mark the border of the played sound 
     jButton1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(255, 255, 255), 3, true)); 
     //show in a label the name of the played sound 
     jLabel1.setText("DO"); 
    } catch (LineUnavailableException | IOException | UnsupportedAudioFileException | InterruptedException ex) { 
     Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); 
    } 
}    

這是「做」按鈕(所有其他按鈕都一樣只是改變參數的SONIDO法)

代碼
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    setButtonstoNull(); 
    if(evt.getSource()==jButton1){ 
     try { 
      sonido("do"); 
      jButton1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(255, 255, 255), 3, true)); 

     } catch (LineUnavailableException | IOException | UnsupportedAudioFileException ex) { 
      Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

}  

我該如何比較?如果有這樣的比較應該在開始按鈕方法?

如果有人能指導我,非常感謝

+2

生成聲音的List(或代表聲音的名稱,可能使用'enum's)播放此列表。當用戶點擊一個按鈕時,檢查按鈕是否與預期的聲音相匹配。我會做的是實際上有一個「播放器」列表,這是原來的「播放」列表的副本,當用戶做出正確的猜測時,會從列表中刪除第一個元素,你總是隻是檢查第一個元素,只要他們做出錯誤的猜測,你可以清除這個'List'並重放原始的「play」'List'並重新開始 – MadProgrammer

+0

這個列表似乎是個好主意,我會嘗試,謝謝你爲你回答 –

回答

0

創建這樣一個枚舉:

public enum Note { 
DO 
{ 
    @Override 
    public String getNote() {return "do";} 
    @Override 
    public String getText() {return "DO";} 
    @Override 
    public Color getColor() {return new Color(255, 255, 255);} 
}, 
RE 
{...}, 
... 
SI 
{...}; 

abstract String getNote() 
abstract String getText() 
abstract String getColor() 
} 

你可以用它在任何地方進行比較和節省一些複製/粘貼。

+0

謝謝! @StephaneM –