Krok 7: Uchovejte páry ve viditelném stavu

Hra funguje dobře tak dlouho, dokud hráč vybírá pouze dvojice ikon, které neodpovídají.Ale zvažte, co by mělo nastat, pokud hráč vybere shodnou dvojici.Namísto nastavení zmizení ikon zapnutím časovače (pomocí metody Start()) by se hra měla resetovat sama tak, aby již nesledovala popisky pomocí referenční proměnné firstClicked a secondClicked bez resetování barev dvou popisků, které uživatel vybral.

Zachování dvojic viditelných

  1. Přidejte následující příkaz if do metody obslužné rutiny události label_Click() poblíž konce kódu těsně nad příkazem, kde spouštíte časovač.Při přidávání do programu si kód pořádně prohlédněte.Zamyslete se nad tím, jak kód funguje.

            ' If the player gets this far, the timer isn't  
            ' running and firstClicked isn't Nothing,  
            ' so this must be the second icon the player clicked 
            ' Set its color to black
            secondClicked = clickedLabel
            secondClicked.ForeColor = Color.Black
    
            ' If the player clicked two matching icons, keep them  
            ' black and reset firstClicked and secondClicked  
            ' so the player can click another icon 
            If firstClicked.Text = secondClicked.Text Then
                firstClicked = Nothing
                secondClicked = Nothing 
                Exit Sub 
            End If 
    
            ' If the player gets this far, the player  
            ' clicked two different icons, so start the  
            ' timer (which will wait three quarters of  
            ' a second, and then hide the icons)
            Timer1.Start()
        End If 
    End Sub
    
    // If the player gets this far, the timer isn't 
            // running and firstClicked isn't null, 
            // so this must be the second icon the player clicked 
            // Set its color to black
            secondClicked = clickedLabel;
            secondClicked.ForeColor = Color.Black;
    
            // If the player clicked two matching icons, keep them  
            // black and reset firstClicked and secondClicked  
            // so the player can click another icon 
            if (firstClicked.Text == secondClicked.Text)
            {
                firstClicked = null;
                secondClicked = null;
                return;
            }
    
            // If the player gets this far, the player  
            // clicked two different icons, so start the  
            // timer (which will wait three quarters of  
            // a second, and then hide the icons)
            timer1.Start();
        }
    }
    

    První řádek příkazu if, který jste právě přidali, zkontroluje, zda první ikona popisku, kterou hráč vybral, je stejná jako ikona druhého popisku.Pokud jsou ikony shodné, program provede tři příkazy mezi složenými závorkami v jazyce C# nebo tři příkazy v příkazu if v jazyce Visual Basic.První dva příkazy resetují referenční proměnné firstClicked a secondClicked, takže už neudržují přehled o žádném popisku. (Tyto dva příkazy si možná pamatujete z obslužné rutiny události časovače Tick.) Třetí příkaz je příkaz return, který říká programu, aby přeskočil zbytek příkazů v metodě bez jejich spuštění.

    Pokud programujete v jazyce Visual C#, mohli jste zaznamenat, že některý kód používá jediný symbol rovná se (=), zatímco jiné příkazy používají dva symboly rovná se (==).Zamyslete se nad tím, proč se používá znak = v některých místech, ale == se používá jinde.

    Toto je typický příklad, který ukazuje rozdíl.Pozorně se podívejte na kód mezi závorkami v příkazu if.

    firstClicked.Text = secondClicked.Text
    
    firstClicked.Text == secondClicked.Text
    

    Zkontrolujte pečlivě první příkaz v bloku kódu po příkazu if.

    firstClicked = Nothing
    
    firstClicked = null;
    

    První z těchto dvou příkazů ověří, zda jsou dvě ikony stejné.Protože se porovnávají dvě hodnoty, použije program v jazyce Visual C# operátor rovnosti ==.Druhý výpis skutečně změní hodnotu (nazývanou přiřazení) a nastaví referenční proměnnou firstClicked na rovnu null k jejímu resetování.To je důvod, proč místo toho používá operátor přiřazení =.Jazyk Visual C# používá operátor = k nastavení hodnot a operátor == k jejich porovnání.Jazyk Visual Basic používá operátor = pro přiřazení i porovnání proměnné.

  2. Uložte a spusťte program a začněte vybírat ikony ve formuláři.Pokud zvolíte dvojici, která neodpovídá, událost časovače Tick se aktivuje a obě ikony zmizí.Pokud zvolíte odpovídající dvojici, nový příkaz if se spustí a návratový příkaz způsobí, že metoda vynechá kód, který spustil časovač, takže ikony zůstanou viditelné, jak je znázorněno na následujícím obrázku.

    Porovnávací hra se zobrazenými dvojicemi ikon

    Hra, kterou vytvoříte v tomto tutoriálu

Chcete-li pokračovat nebo přezkoumat