Didacticiel : Afficher un message dans votre application WinForms de jeu de combinaisons

Dans cette série de quatre didacticiels, vous générez un jeu de combinaisons dans lequel le joueur doit associer des paires d’icônes masquées.

Dans ce didacticiel, vous modifiez votre jeu de combinaisons pour que les paires correspondantes restent visibles et pour afficher un message de félicitations lorsqu’un joueur gagne.

Dans ce tutoriel, vous allez apprendre à :

  • Garder les paires visibles.
  • Vérifier si un joueur a gagné.
  • Tester d’autres fonctionnalités.

Prérequis

Ce tutoriel s’appuie sur les tutoriels précédents :

  1. Créer une application de jeu de combinaisons
  2. Ajouter des icônes à votre jeu de combinaisons
  3. Ajouter un minuteur à votre jeu de combinaisons

Garder les paires visibles

Lorsqu’un joueur combine une paire, le jeu doit se réinitialiser pour ne plus suivre les étiquettes qui utilisent les variables de référence firstClicked et secondClicked. Il ne doit pas réinitialiser les couleurs des deux étiquettes qui ont été combinées. Ces étiquettes continuent d’être affichées.

  1. Ajoutez l’instruction suivanteif à la nouvelle méthode de gestionnaire d'événements label_Click(). Placez-la près de la fin du code juste au-dessus de l’instruction où vous démarrez le minuteur.
        // 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();
    }
}

Important

Utilisez le contrôle de langage de programmation en haut à droite de cette page pour voir l’extrait de code C# ou l’extrait de code Visual Basic.

Programming language control for Microsoft Learn

L'instruction if vérifie si l'icône du premier contrôle Label choisi par 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 ses trois instructions. Les deux premières instructions réinitialisent les variables de référence firstClicked et secondClicked. Elles ne suivent plus les étiquettes. La troisième instruction est une instruction return, qui ignore le reste des instructions dans la méthode sans les exécuter.

  1. Exécutez le programme, puis commencez à choisir des carrés sur le formulaire.

Screenshot of the Matching Game that you create in this tutorial.

Si vous choisissez une paire qui ne correspond pas, l'événement Tick du minuteur se déclenche. Les deux icônes disparaissent.

Si vous choisissez une paire correspondante, la nouvelle instruction if s’exécute. L’instruction de retour fait que la méthode ignore le code qui démarre le minuteur. Les icônes restent visibles.

Vérifiez si un joueur a gagné

Vous avez créé un jeu amusant. Une fois qu’un joueur gagne, le jeu doit se terminer. Cette section ajoute une méthode pour vérifier si le joueur a gagné.

  1. Ajoutez une méthode CheckForWinner() en bas de votre code, sous le gestionnaire d'événements timer1_Tick().
/// <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 C# ou For Each en Visual Basic pour parcourir chaque étiquette dans le TableLayoutPanel. Il vérifie la couleur de l’icône de chaque étiquette pour vérifier si elle correspond à l’arrière-plan. Si les couleurs correspondent, l’icône reste invisible, et le lecteur n’a pas fait correspondre 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 du formulaire ont été associées. Le programme affiche un MessageBox pour féliciter le joueur d’avoir gagné, puis appelle la méthode Close() pour mettre fin au jeu.

  1. Appelez la nouvelle méthode CheckForWinner() via le gestionnaire d'événements Click du contrôle Label.
// 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;
}

Veillez à ce que votre programme vérifie si le joueur a gagné après avoir affiché la seconde icône choisie par le joueur. Recherchez la ligne où vous définissez la couleur de la seconde icône choisie, puis appelez la méthode CheckForWinner() juste après.

  1. Enregistrez et exécutez le programme. Jouez au jeu et associez toutes les icônes. Lorsque vous gagnez, le programme affiche un message de félicitations.

    Screenshot shows the Matching game with a MessageBox.

    Après avoir sélectionné OK, le jeu de combinaisons se ferme.

Tester d’autres fonctionnalités

Votre jeu de combinaisons est terminé. Vous pouvez ajouter d’autres fonctionnalités pour rendre ce jeu plus difficile et intéressant. Voici quelques options possibles.

  • Remplacez les icônes et les couleurs par d'autres de votre choix.

    Examinez la propriété Forecolor de l’étiquette.

  • Ajoutez une horloge de jeu qui relèvera le temps requis par le joueur pour gagner.

    Vous pouvez ajouter une étiquette pour afficher le temps écoulé sur le formulaire. Placez-la au-dessus de TableLayoutPanel. Ajoutez un autre minuteur au formulaire pour suivre l’heure. Utilisez le code pour démarrer l'horloge lorsque le joueur commence à jouer et arrêter l'horloge lorsque la dernière paire est indiquée.

  • Ajoutez un son lorsque le joueur trouve une paire identique, un autre lorsqu'il sélectionne deux icônes différentes et un troisième lorsque le programme masque à nouveau les icônes.

    Pour émettre des sons, vous pouvez utiliser l'espace de noms System.Media. Pour plus d’informations, consultez Lire des sons dans une application Windows Forms (C#) ou Comment lire de l’audio dans Visual Basic.

  • Augmentez la difficulté du jeu en agrandissant la taille du plateau.

    Vous ne devez pas vous contenter d'ajouter des lignes et des colonnes à TableLayoutPanel. Vous devez également prendre en compte le nombre d’icônes que vous créez.

  • Augmentez la difficulté du jeu en masquant la première icône si le joueur répond trop lentement.

Étapes suivantes

Félicitations ! Vous avez terminé cette série de didacticiels. Vous avez effectué ces tâches de programmation et de conception dans l’IDE Visual Studio :

  • Stocker des objets, tels que des icônes, dans une liste
  • Utiliser une boucle dans C# ou Visual Basic pour effectuer des itérations dans une liste
  • Suivre l’état à l’aide de variables de référence
  • Créer un gestionnaire d’événements pour répondre aux événements de plusieurs objets
  • Ajouter un minuteur qui compte et déclenche un événement

Passez à cet article pour une présentation approfondie de Windows Forms Designer.