2012-02-28 98 views
1

我試圖確保在我的記憶遊戲中,一旦有人選擇了兩張牌。他們是可見的,只要他們選擇第三張牌,前兩張牌就不再可見。如何在2個按鈕被選中後取消選擇一個按鈕JToggleButton

下面是我實現的ActionPerformed方法。

public void actionPerformed(ActionEvent e){ 
    cardsSelected++; 

    int row=0; 
    int column=0; 
    int row2=0; 
    int column2=0; 
    if(cardsSelected == 3){ 
    card1.setSelected(false); 
    card2.setSelected(false); 
    card1 = null; 
    card2 = null; 

    cardsSelected = 1; 

    } 
    if(card1 == null){ 
     card1 = (Cell) e.getSource(); 
     card1.setSelected(true); 
     row = card1.getRow(); 
     column = card1.getColumn(); 
     board[row][column].setIcon2(); 
     } 
    else if(card2 == null){ 
     card2 = (Cell) e.getSource();  
     card2.setSelected(true); 
     row = card2.getRow(); 
     column = card2.getColumn(); 
     board[row][column].setIcon2(); 
    } 

    if(card1 != null && card2 != null){ 
    numTries++; 

    if(card1.sameType(card2)){ 


     row = card1.getRow(); 
     column = card1.getColumn();  
     row2 = card2.getRow(); 
     column2 = card2.getRow();  
     if(row != row2 && column != column2){ 
     board[row][column].setVisible(false); 
     board[row2][column2].setVisible(false); 
     card1=null; 
     card2=null; 
     } 
    } 


    }   
     } 

任何見識將非常歡迎! 謝謝大家! Mjall2

+2

我自己,我會使用擺動計時器來顯示XX毫秒不正確的選擇對,然後覆蓋它們。這是大多數這些類型的遊戲運行的方式,並允許用戶重新選擇剛選擇的項目。另外,請考慮改進您的「創意」縮進。這不僅僅是爲了讓你的代碼看起來很漂亮,而且還有助於其他人(換句話說,我們*)更好地理解你的代碼。 – 2012-02-28 23:20:21

+0

爲了更好地提供幫助,請發佈[SSCCE](http://sscce.org/)。 – 2012-02-29 05:20:20

回答

1

使用按鈕的選定狀態來指示是否顯示或隱藏卡片可能很方便,然後您可以使用啓用狀態來指示一對已匹配且不在場。有一個相關的例子here

+0

@trashgod 我試圖解密代碼,但是,我的問題是,使用JToggleButton,一旦我選擇一張卡片,它周圍的藍色邊框就會出現,並且它不會消失,除非我再次單擊該卡片。我希望一旦我點擊第三張牌就會消失。 – Mjall2 2012-02-29 00:08:08

+0

@ Mjall2:'checkMatch()'通過將第三個按鈕添加到'selected'並移除/取消選擇前兩個來處理這個問題。 – trashgod 2012-02-29 02:21:03

相關問題