Krok 8: Přidáte metodu ověření, zda přehrávač vyhraných
Vytvořili jste zábavnou hru, ale ta potřebuje další položku.Hra by měla skončit při vítězství hráče, takže je třeba přidat metodu CheckForWinner() k ověření, zda hráč zvítězil.
Přidat metodu k ověření, zda hráč zvítězil
Přidejte metodu CheckForWinner() do formuláře, jak ukazuje následující kód.
''' <summary> ''' Check every icon to see if it is matched, by ''' comparing its foreground color to its background color. ''' If all of the icons are matched, the player wins ''' </summary> Private Sub CheckForWinner() ' Go through all of the labels in the TableLayoutPanel, ' checking each one to see if its icon is matched For Each control In TableLayoutPanel1.Controls Dim iconLabel = TryCast(control, Label) If iconLabel IsNot Nothing AndAlso iconLabel.ForeColor = iconLabel.BackColor Then Exit Sub Next ' If the loop didn't return, it didn't find ' any unmatched icons ' That means the user won. Show a message and close the form MessageBox.Show("You matched all the icons!", "Congratulations") Close() End Sub
/// <summary> /// Check every icon to see if it is matched, by /// comparing its foreground color to its background color. /// If all of the icons are matched, the player wins /// </summary> private void CheckForWinner() { // Go through all of the labels in the TableLayoutPanel, // checking each one to see if its icon is matched foreach (Control control in tableLayoutPanel1.Controls) { Label iconLabel = control as Label; if (iconLabel != null) { if (iconLabel.ForeColor == iconLabel.BackColor) return; } } // If the loop didn’t return, it didn't find // any unmatched icons // That means the user won. Show a message and close the form MessageBox.Show("You matched all the icons!", "Congratulations"); Close(); }
Metoda používá další smyčku foreach v jazyce Visual C# nebo smyčku For Each v jazyce Visual Basic k projití každé jmenovky v kontejneru TableLayoutPanel.Používá operátor rovnosti (== v jazyce Visual C# a = v jazyce Visual Basic) ke kontrole každé barvy ikony k ověření, zda odpovídá pozadí.Pokud barvy shodují, zůstane ikona skrytý a přehrávač nebyl porovnány všechny zbývající ikony.V takovém případě program použije příkaz return k vynechání zbývající části metody.Pokud smyčka projde přes všechny jmenovky bez spuštění příkazu return, znamená to, že všechny ikony byly porovnány.Program zobrazí MessageBox a pak zavolá formulářovou metodu Close() k ukončení hry.
Dále nechejme obslužnou rutinu události kliknutí jmenovky zavolat novou metodu CheckForWinner().Ujistěte se, že váš program kontroluje vítěze až po tom, co zobrazuje druhou ikonu, na kterou hráč klikne.Vyhledejte řádek, kde jste nastavili druhou kliknutelnou barvu ikony a zavolejte metodu CheckForWinner() hned po tomto, jak ukazuje následující kód.
' 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 ' Check to see if the player won CheckForWinner() ' 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 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; // Check to see if the player won CheckForWinner(); // 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; }
Program uložte a spusťte ho.Hrajte hru a porovnejte všechny ikony.Pokud vyhrajete, program zobrazí MessageBox (jak je ukázáno na následujícím obrázku) a potom jej zavře.
Skládačka s ovládacím prvkem MessageBox
Chcete-li pokračovat nebo znovu projít
Přechod na další výukový program naleznete v tématu Krok 9: Zkuste další funkce.
K návratu do předchozího kroku výukového programu přejděte na Krok 7: Zachovat viditelné páry.