2012-02-28 84 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

相关问题