Étape 7 : garder les paires visibles
Le jeu fonctionne correctement tant que le joueur se contente de cliquer sur des paires d'icônes qui ne correspondent pas.Mais imaginez ce qui doit se produire lorsque le joueur clique sur une paire d'icônes identiques.Au lieu de faire disparaître les icônes en activant la minuterie (à l'aide de la méthode Start() ), le jeu doit se réinitialiser pour arrêter le suivi de tous les contrôles Label à l'aide des variables de référence firstClicked et secondClicked, sans réinitialiser les couleurs des deux contrôles Label sur lequel le joueur a cliqué.
Pour garder des paires visibles
Ajoutez l'instruction if suivante à la méthode du gestionnaire d'événements label_Click(), vers la fin (juste au-dessus de l'instruction où vous démarrez la minuterie).Examinez attentivement le code lorsque vous l'ajoutez au programme.Analysez son fonctionnement.
' 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(); } }
La première ligne de l'instruction if que vous venez d'ajouter vérifie si l'icône du premier contrôle Label sur lequel clique le joueur est la même que l'icône du deuxième contrôle Label.Si les icônes sont identiques, le programme exécute les trois instructions entre les accolades en C# ou les trois instructions dans l'instruction if en Visual Basic.Les deux premières instructions réinitialisent les variables de référence firstClicked et secondClicked pour arrêter le suivi des différents contrôles Label.(Vous pouvez identifier ces deux instructions dans le gestionnaire d'événements Tick de la minuterie.) La troisième instruction est une instruction return, qui indique au programme d'ignorer le reste des instructions dans la méthode et de ne pas les exécuter.
Si vous programmez en Visual C#, vous aurez éventuellement remarqué qu'une partie du code utilise un seul signe égal (=), alors que d'autres instructions en utilisent deux (==).Examinez pourquoi = est utilisé dans certains cas et == dans d'autres.
Cet exemple montre bien la différence entre les deux cas.Examinez attentivement le code entre parenthèses dans l'instruction if.
firstClicked.Text = secondClicked.Text
firstClicked.Text == secondClicked.Text
Analysez ensuite attentivement la première instruction dans le bloc de code après l'instruction if.
firstClicked = Nothing
firstClicked = null;
La première de ces deux instructions vérifie si deux icônes sont identiques.Étant donné que deux valeurs sont comparées, le programme Visual C# utilise l'opérateur d'égalité ==.En fait, la deuxième instruction modifie la valeur (appelée assignation) en affectant la valeur null à la variable de référence firstClicked pour la réinitialiser.C'est la raison pour laquelle elle utilise plutôt l'opérateur d'assignation =.Visual C# utilise = pour définir des valeurs et == pour les comparer.Visual Basic utilise = pour l'assignation et la comparaison.
Enregistrez et exécutez le programme, puis commencez à cliquer dans le formulaire.Si vous cliquez sur une paire qui ne correspond pas, l'événement Tick de la minuterie se déclenche et les deux icônes disparaissent.Si vous cliquez sur une paire identique, la nouvelle instruction if s'exécute et l'instruction return indique à la méthode d'ignorer le code qui démarre la minuterie, pour que les icônes restent visibles (comme indiqué dans l'image suivante).
Jeu de combinaisons avec des paires d'icônes visibles
Pour continuer ou examiner
Pour passer à l'étape suivante du didacticiel, consultez Étape 8 : ajouter une méthode pour vérifier si le joueur a gagné.
Pour revenir à l'étape précédente du didacticiel, consultez Étape 6 : ajouter une minuterie.