Partage via


Tutoriel : Ajouter des variables de référence et un contrôle de minuteur à votre application WinForms de jeu correspondante

Dans cette série de quatre tutoriels, vous créez un jeu d'association, où le joueur associe des paires d’icônes cachées.

Votre programme de jeu de combinaisons doit effectuer le suivi des contrôles Étiquette choisis par le joueur. Une fois qu’un joueur choisit la première étiquette, le programme doit afficher l’icône. Une fois la deuxième étiquette choisie, le programme doit afficher les deux icônes pendant un bref instant. Ensuite, il masque les deux icônes.

Votre programme suit le Label que vous choisissez en premier et en deuxième en utilisant les variables de référence . Un minuteur masque les icônes et contrôle la durée d’affichage des icônes

  • Ajoutez des références d’étiquette.
  • Ajoutez un minuteur.

Conditions préalables

Ce didacticiel s’appuie sur les didacticiels précédents, Créer une application de jeu correspondante et Ajouter des icônes à votre jeu correspondant. Suivez d’abord ces didacticiels.

Ajouter des références d’étiquettes

Dans cette section, vous allez ajouter deux variables de référence à votre code. Elles effectuent le suivi des objets d’étiquette, ou font référence à ces objets.

  1. Ajoutez des références d’étiquette à votre formulaire à l’aide du code suivant dans Form1.cs ou Form1.vb.

    public partial class Form1 : Form
    {
        // firstClicked points to the first Label control 
        // that the player clicks, but it will be null 
        // if the player hasn't clicked a label yet
        Label firstClicked = null;
    
        // secondClicked points to the second Label control 
        // that the player clicks
        Label secondClicked = null;
    

Si vous utilisez C#, placez le code après l’accolade ouvrante, puis immédiatement après la déclaration de classe (public partial class Form1 : Form). Si vous utilisez Visual Basic, placez le code juste après la déclaration de classe (Public Class Form1).

Ces instructions n’entraînent pas l’affichage des contrôles Étiquette sur le formulaire, car il n’existe aucun mot clé new. Au démarrage du programme, les firstClicked et les secondClicked sont définis sur null pour C# ou Nothing pour Visual Basic.

  1. Modifiez votre gestionnaire d’événements Click dans Form1.cs ou Form1.vb pour utiliser la nouvelle variable de référence firstClicked. Supprimez la dernière instruction de la méthode du gestionnaire d’événements label1_Click() (clickedLabel.ForeColor = Color.Black;) et remplacez-la par l’instruction if comme suit.

    /// <summary>
    /// Every label's Click event is handled by this event handler
    /// </summary>
    /// <param name="sender">The label that was clicked</param>
    /// <param name="e"></param>
    private void label1_Click(object sender, EventArgs e)
    {
        Label clickedLabel = sender as Label;
    
        if (clickedLabel != null)
        {
            // If the clicked label is black, the player clicked
            // an icon that's already been revealed --
            // ignore the click
            if (clickedLabel.ForeColor == Color.Black)
                return;
    
            // If firstClicked is null, this is the first icon 
            // in the pair that the player clicked,
            // so set firstClicked to the label that the player 
            // clicked, change its color to black, and return
            if (firstClicked == null)
            {
                firstClicked = clickedLabel;
                firstClicked.ForeColor = Color.Black;
    
                return;
            }
        }
    }
    

  1. Enregistrez et exécutez votre programme. Choisissez l’un des contrôles d’étiquette et son icône s’affiche. Choisissez le contrôle d’étiquette suivant et notez que rien ne se produit.

    Capture d’écran montrant le jeu correspondant montrant une icône.

    Seule la première icône choisie s’affiche. Les autres icônes sont invisibles.

Le programme suit déjà la première étiquette choisie par le joueur. La référence firstClicked n’est pas null en C# ou Nothing en Visual Basic. Lorsque votre instruction if trouve que firstClicked n’est pas égale à null ou Nothing, elle exécute les instructions.

Ajouter un minuteur

L’application de jeu de combinaisons utilise un contrôle Timer. Un minuteur attend, puis déclenche un événement. Cela s’appelle un cycle. Un minuteur peut démarrer une action ou répéter une action régulièrement.

Dans votre programme, le minuteur permet à un joueur de choisir deux icônes. Si les icônes ne correspondent pas, elle masque à nouveau les deux icônes après une courte période de temps.

  1. Sélectionnez l’onglet Boîte à outils, dans la catégorie Composants, double-cliquez sur le composant Minuteur, ou faites-le glisser vers votre formulaire. L’icône du minuteur, appelée minuteur1, apparaît dans un espace situé sous le formulaire.

    Capture d’écran montrant l’icône du minuteur sous le formulaire.

  2. Sélectionnez l’icône Minuteur1 pour sélectionner le minuteur. Dans la fenêtre Propriétés, sélectionnez le bouton Propriétés pour afficher les propriétés.

  3. Définissez la propriété Interval sur 750, soit 750 millisecondes.

    La propriété Interval indique au minuteur la durée d’attente entre les cycles, c’est-à-dire le moment où son événement Tick se déclenche. Votre programme appelle la méthode Start() pour démarrer le minuteur une fois que le joueur choisit la deuxième étiquette.

  4. Choisissez l’icône de contrôle du minuteur, puis appuyez sur Entrée, ou double-cliquez sur le minuteur. L’IDE ajoute un gestionnaire d’événements Tick vide à Form1.cs ou Form1.vb. Remplacez le code par le code suivant.

    /// <summary>
    /// This timer is started when the player clicks 
    /// two icons that don't match,
    /// so it counts three quarters of a second 
    /// and then turns itself off and hides both icons
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void timer1_Tick(object sender, EventArgs e)
    {
        // Stop the timer
        timer1.Stop();
    
        // Hide both icons
        firstClicked.ForeColor = firstClicked.BackColor;
        secondClicked.ForeColor = secondClicked.BackColor;
    
        // Reset firstClicked and secondClicked 
        // so the next time a label is
        // clicked, the program knows it's the first click
        firstClicked = null;
        secondClicked = null;
    }
    

Le gestionnaire d’événements Tick effectue trois opérations :

  • Il s'assure que le minuteur ne fonctionne pas en appelant la méthode Stop().
  • Il utilise deux variables de référence, firstClicked et secondClicked, pour rendre les icônes des deux étiquettes que le joueur a choisi de nouveau invisibles.
  • Il réinitialise les variables de référence firstClicked et secondClicked à null en C# et Nothing en Visual Basic.
  1. Accédez à l’éditeur de code et ajoutez du code en haut et en bas de la méthode du gestionnaire d’événements label1_Click() dans Form1.cs ou Form1.vb. Ce code vérifie si le minuteur est activé, définissez la variable de référence secondClicked et démarrez le minuteur. La méthode de gestionnaire d’événements label1_Click() se présente désormais comme suit :

    /// <summary>
    /// Every label's Click event is handled by this event handler
    /// </summary>
    /// <param name="sender">The label that was clicked</param>
    /// <param name="e"></param>
    private void label1_Click(object sender, EventArgs e)
    {
        // The timer is only on after two non-matching 
        // icons have been shown to the player, 
        // so ignore any clicks if the timer is running
        if (timer1.Enabled == true)
            return;
    
        Label clickedLabel = sender as Label;
    
        if (clickedLabel != null)
        {
            // If the clicked label is black, the player clicked
            // an icon that's already been revealed --
            // ignore the click
            if (clickedLabel.ForeColor == Color.Black)
                return;
    
            // If firstClicked is null, this is the first icon
            // in the pair that the player clicked, 
            // so set firstClicked to the label that the player 
            // clicked, change its color to black, and return
            if (firstClicked == null)
            {
                firstClicked = clickedLabel;
                firstClicked.ForeColor = Color.Black;
                return;
            }
    
            // 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 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();
        }
    }
    

  • Le code situé en haut de la méthode vérifie si le minuteur a été démarré en vérifiant la valeur de la propriété Enabled. Si le joueur choisit les contrôles d’étiquette premier et deuxième et que le minuteur commence, le choix d’une troisième étiquette ne fera rien.
  • Le code situé en bas de la méthode définit la variable de référence secondClicked pour suivre le deuxième contrôle Label. Ensuite, il définit cette couleur d’icône d’étiquette sur noir pour la rendre visible. Il démarre ensuite le minuteur en mode déclenchement unique pour qu’il attende 750 millisecondes avant de déclencher un seul cycle. Le gestionnaire d’événements Tick du minuteur masque les deux icônes et réinitialise les variables de référence firstClicked et secondClicked. Le formulaire est prêt pour que le joueur choisisse une autre paire d’icônes.

Note

Si vous copiez et collez le bloc de code label1_Click() plutôt que d’entrer le code manuellement, veillez à remplacer le code label1_Click() existant. Sinon, vous obtiendrez un bloc de code en double.

  1. Enregistrez et exécutez votre programme. Sélectionnez un carré et l’icône devient visible. Choisissez un autre carré. L’icône apparaît brièvement, puis les deux icônes disparaissent.

Votre programme effectue maintenant le suivi des premières et deuxième icônes que vous choisissez. Il utilise le minuteur pour s’interrompre avant de faire disparaître les icônes.

Étapes suivantes

Passez au tutoriel suivant pour savoir comment finir votre jeu de combinaisons.