Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:记忆游戏_Java_Swing_Interface_Jbutton_Actionlistener - Fatal编程技术网

Java:记忆游戏

Java:记忆游戏,java,swing,interface,jbutton,actionlistener,Java,Swing,Interface,Jbutton,Actionlistener,我目前正在做一个记忆游戏项目,你可以点击两张卡片来检查图片是否相同。我面临的问题是,如果两张牌没有相同的图片,第二张牌就不会出现,第一张牌也会关闭 这是我认为有某种错误的代码 public void actionPerformed(ActionEvent e) { clicks +=1; Card clicked = (Card)e.getSour

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

这是我认为有某种错误的代码

 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;
                 }   

你的代码告诉它这样做

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

延迟2秒,然后使用解锁隐藏卡。 或许

在你再次点击其中一张之前,不要碰这些卡片。这需要计数器从1到2再到3,然后将它们翻转过来。
不打算为您编写代码,但这只是一个线索。

所以您要把所有代码都扔给我们,然后说“修复它”?堆栈溢出不是这样工作的。我们不是您的个人代码调试器-您实际上必须尝试一些东西!我想发布所有的代码是可以的,但请给我们一个详细的解释,具体是您认为问题可能来自何处,以及通常可能相关的任何信息。很抱歉,我不是这个意思,我从2-3个小时以来一直在处理这个错误,并尝试了各种方法,但仍然无法克服它,所以我想,如果有人想尝试运行它来查看错误,那么发布我的全部代码可能会对我有好处:s我只是尝试注释解锁卡和显示的第二张卡,但是程序是否应该按顺序执行,为什么调用此方法会阻止图像显示,即使我在它之前使用了Thread.sleep。。