Sdílet prostřednictvím


Krok 7: Zachovat viditelné páry

Hra funguje dobře tak dlouho, dokud hráč pouze klikne na dvojice ikon, které neodpovídají.Ale zvažte, co by mělo nastat, klikne-li hráč na shodný pár.Namísto vytváření zmizení ikon zapnutím časovače (pomocí metody Start()) měla by se hra resetovat sama tak, aby již neudržovovala přehled o jmenovkách, které používají referenční proměnné firstClicked a secondClicked bez resetování barev dvou jmenovek, na které bylo kliknuto.

Zachovat dvojice viditelné

  1. Přidejte následující příkaz if do metody obslužné rutiny události label_Click() poblíž konce těsně nad příkazem, kde spouštíte časovač.Prohlédněte si pořádně kód při jeho přidání do programu.Zvažte, 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 jmenovky, na kterou hráč kliknul, je stejná jako ikona druhé jmenovky.Pokud jsou ikony stejné, 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é jmenovce.(Můžete rozpoznat tyto dva příkazy z obslužné rutiny události časovače Tick.) Třetí příkaz je návratový příkaz, 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 ==).Zvažte proto proč se používá = v některých místech, ale == je používáno jinde.

    Toto je typickým příkladem, který zobrazuje 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 porovnají dvě hodnoty, použije program v jazyce Visual C# operátor rovnosti ==.Druhý výpis skutečně změní hodnotu (nazývané přiřazení), nastaví referenční proměnnou firstClicked rovno null k jejímu resetování.To je důvod, proč používá místo toho operátor přiřazení =.Jazyk Visual C# používá operátor přiřazení = k nastavení hodnot a operátor rovnosti == k jejich porovnání.Jazyk Visual Basic používá operátor přiřazení = pro přiřazení i porovnání.

  2. Uložte a spusťte program a začněte kliknutím ve formuláři.Pokud kliknete na pár, který neodpovídá, událost časovače Tick se aktivuje a obě ikony zmizí.Pokud kliknete na odpovídající pár, 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 vytváříte v tomto kurzu

Chcete-li pokračovat nebo znovu projít