0

私は記憶ゲームに取り組んでおり、それを設定したいので、最初の をクリックし"card"、次に 2 番目のカードをクリックし、2 番目のカードが数秒間同じでない場合は、その"non-flipped"位置に戻ります。

を使用してみましたがSwingWorker、動作しません。2 枚目のカードが重複している場合は、スリープ時間だけ待ってから消えます。一致しない場合は、「伏せて」待機し、スリープ タイマーの後に最初のカードが裏返されます。これは、Thread.sleep を配置する場所に関係なく発生します。Thread.sleepSwingTimerThread.sleep"flip"

カードを操作している間は「タイマーを変更する」ように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;
                    }
                }
            }
        }
    }

事前にアドバイスをありがとう

4

1 に答える 1