我正在做一个记忆游戏,我想设置它,所以我点击第一张"card"
,然后点击第二张,如果它们不一样,第二张卡片会显示几秒钟,然后它们会返回该"non-flipped"
位置。
我尝试使用SwingWorker
,Thread.sleep
和SwingTimer
我无法让它工作。Thread.sleep
第二张卡不会,"flip"
如果它是重复的,它会等待睡眠时间并消失。如果它不匹配,它会等待“面朝下”,并且在睡眠计时器之后,第一张卡会翻转回来。无论我将 Thread.sleep 放在哪里,都会发生这种情况。
它似乎只会在Swing Timer
我与卡片交互时“更改计时器”,所以我最终在它激活之前翻转了 8 张卡片。
我没有运气SwingWorker
我什至不确定它是否适用于我正在寻找的东西。
这是我的代码:
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
for(int index = 0; index < arraySize; index++)
{
if(button[index] == e.getSource())
{
button[index].setText(String.valueOf(cards.get(index)));
button[index].setEnabled(false);
number[counter]=cards.get(index);
if (counter == 0)
{
counter++;
}
else if (counter == 1)
{
if (number[0] == number[1])
{
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setVisible(false);
}
}
}
else
{
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setEnabled(true);
button[i].setText("Card");
}
}
}
counter = 0;
}
}
}
}
}
基本上我需要的是当计数器 == 1 并且卡片不匹配时执行此代码:
button[index].setText(String.valueOf(cards.get(index)));
button[index].setEnabled(false);
然后停顿一下card is revealed
一段时间,最后它恢复将卡返回到其面朝下位置。
这是我尝试过的Thread.sleep()
:
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
for(int index = 0; index < arraySize; index++)
{
if(button[index] == e.getSource())
{
button[index].setText(String.valueOf(cards.get(index)));
button[index].setEnabled(false);
number[counter]=cards.get(index);
if (counter == 0)
{
counter++;
}
else if (counter == 1)
{
if (number[0] == number[1])
{
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setVisible(false);
}
}
}
else
{
try
{
Thread.sleep(800);
}
catch (InterruptedException e1)
{
e1.printStackTrace();
}
for(int i = 0; i < arraySize; i++)
{
if(!button[i].isEnabled())
{
button[i].setEnabled(true);
button[i].setText("Card");
}
}
}
counter = 0;
}
}
}
}
}
提前感谢您的任何建议