Partager via


É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

  1. 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.

  2. 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

    Jeu créé dans ce didacticiel

Pour continuer ou examiner