Étape 8 : ajouter une méthode pour vérifier si le joueur a gagné
Vous avez créé un jeu divertissant, mais il a besoin d'un élément supplémentaire.Le jeu doit se terminer en cas de victoire du joueur : vous devez donc ajouter une méthode CheckForWinner() pour vérifier si le joueur a gagné.
Pour ajouter une méthode afin de vérifier si le joueur a gagné
Ajoutez une méthode CheckForWinner() à votre formulaire, comme indiqué dans le code suivant.
''' <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(); }
La méthode utilise une autre boucle foreach en Visual C# ou For Each en Visual Basic pour parcourir chaque contrôle Label dans le TableLayoutPanel.Elle utilise l'opérateur d'égalité (== en Visual C# et = en Visual Basic) pour analyser la couleur de l'icône de chaque contrôle Label et vérifier si elle correspond à celle de l'arrière-plan.Si les couleurs correspondent, l'icône reste invisible et le joueur n'a pas associé toutes les icônes restantes.Dans ce cas, le programme utilise une instruction return pour ignorer le reste de la méthode.Si la boucle parcourt tous les contrôles Label sans exécuter l'instruction return, cela signifie que toutes les icônes ont été associées.Le programme affiche un MessageBox, puis appelle la méthode Close() du formulaire pour terminer le jeu.
Ensuite, appelez la nouvelle méthode CheckForWinner() via le gestionnaire d'événements Click du contrôle Label.Assurez-vous que votre programme vérifie s'il y a un gagnant après avoir affiché la deuxième icône sur laquelle le joueur a cliqué.Recherchez la ligne où vous définissez la couleur de la deuxième icône sélectionnée par le joueur, puis appelez la méthode CheckForWinner() juste après, comme indiqué dans le code suivant.
' 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; }
Enregistrez et exécutez le programme.Jouez au jeu et associez toutes les icônes.Lorsque vous gagnez, le programme affiche un MessageBox (comme indiqué dans l'image suivante), puis ferme la boîte.
Jeu de combinaisons avec MessageBox
Pour continuer ou examiner
Pour passer à l'étape suivante du didacticiel, consultez Étape 9 : tester d'autres fonctionnalités.
Pour revenir à l'étape précédente du didacticiel, consultez Étape 7 : garder les paires visibles.