Java:记忆游戏

时间:2013-07-23 22:11:13

标签: java swing interface jbutton actionlistener

我目前正在开发一个记忆游戏项目,您可以点击两张卡片来检查图片是否相同。我面临的问题是,如果两张卡片没有相同的图片,则第二张图片不会出现,第一张图片也会关闭。

以下是我认为存在某种错误的代码。

 public void actionPerformed(ActionEvent e)         
    {                    
                        clicks +=1; 
                Card clicked = (Card)e.getSource(); 
                clicked.changeColor();

                for(int i=0;i<16;i++) 
                    if(clicked == cards.get(i)) 
                        openCardIndices.add(i); 


                 if(clicks==2 && openCardIndices.get(openCardIndices.size()-1)!=openCardIndices.get(openCardIndices.size()-2)) 
                 {
                    if(cards.get(openCardIndices.get(openCardIndices.size()-1)).equals(cards.get(openCardIndices.get(openCardIndices.size()-2))))
                    {
                        (cards.get(openCardIndices.get(openCardIndices.size()-1))).removeActionListener(this);
                        (cards.get(openCardIndices.get(openCardIndices.size()-2))).removeActionListener(this);
                    }
                    else
                    {

                        openCardIndices.remove(openCardIndices.size()-1);
                        openCardIndices.remove(openCardIndices.size()-1);
                        //lockCards();
                        unlockCards();
                    }
                    clicks = 0;
                 }   

1 个答案:

答案 0 :(得分:1)

您的代码告诉它这样做。

您可能希望else子句执行以下操作:

  • 在解锁卡片之前延迟2秒。

或者

  • 将卡片单独留下,直到再次单击其中一个卡片。这将要求计数器从1到2再到3,然后再将它们翻过来。

不会为你编写代码,但它是一条线索。