Partage via


Tutoriel : Afficher un message dans votre application WinForms de jeu correspondant

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

Dans ce tutoriel, vous modifiez votre jeu correspondant pour garder les paires mises en correspondance visibles et pour afficher un message de félicitations lorsqu’un joueur gagne.

Dans ce tutoriel, vous allez apprendre à :

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

Conditions préalables

Ce didacticiel s’appuie sur ces didacticiels précédents :

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

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é mises en correspondance. Ces étiquettes continuent d’être affichées.

  1. Ajoutez l’instruction if suivante à la méthode du 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();
    }
}

L’instruction if vérifie si l’icône de la première étiquette choisie par le lecteur est identique à celle de la deuxième étiquette. 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. Ils n’effectuent plus le suivi d’aucune des étiquettes. La troisième instruction est une instruction return, qui ignore le reste des instructions de la méthode sans les exécuter.

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

Capture d’écran du jeu correspondant que vous créez dans ce tutoriel.

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 return fait que la méthode ignore le code qui démarre le minuteur. Les icônes restent visibles.

Vérifier si un joueur a gagné

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

  1. Ajoutez une méthode CheckForWinner() au 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 une boucle For Each en Visual Basic pour parcourir chaque étiquette du TableLayoutPanel. Il vérifie la couleur de l’icône de chaque étiquette pour vérifier s’il correspond à l’arrière-plan. Si les couleurs correspondent, l’icône reste invisible et le joueur n’a pas mis en correspondance 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 traverse toutes les étiquettes sans exécuter l’instruction return, cela signifie que toutes les icônes du formulaire ont été mises en correspondance. Le programme affiche une boîte de message pour féliciter le joueur pour sa victoire, puis appelle la méthode Close() pour mettre fin au jeu.

  1. Le gestionnaire d’événements Click de l’étiquette doit appeler la nouvelle méthode CheckForWinner().
// 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;
}

Assurez-vous que votre programme recherche un gagnant immédiatement après qu’il affiche la deuxième icône choisie par le joueur. Recherchez la ligne dans laquelle vous définissez la couleur de la deuxième icône choisie, puis appelez la méthode CheckForWinner() juste après cette ligne.

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

    Capture d’écran montrant le jeu d'associations avec une boîte de dialogue.

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

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

  • Remplacez les icônes et les couleurs par celles que vous choisissez.

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

  • Ajoutez un minuteur de jeu qui suit le temps nécessaire au joueur pour gagner.

    Vous pouvez ajouter une étiquette pour afficher le temps écoulé sur le formulaire. Placez-la au-dessus du TableLayoutPanel. Ajoutez un autre minuteur au formulaire pour suivre l’heure. Utilisez du code pour démarrer le minuteur lorsque le joueur démarre le jeu et arrêter le minuteur après qu’il correspond aux deux dernières icônes.

  • Ajoutez un son lorsque le joueur trouve une correspondance, un autre son lorsque le joueur découvre deux icônes qui ne correspondent pas, et un troisième son lorsque le programme masque à nouveau les icônes.

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

  • Rendre le jeu plus difficile en rendant le tableau plus grand.

    Vous devez faire plus que simplement ajouter des lignes et des colonnes au TableLayoutPanel. Vous devez également prendre en compte le nombre d’icônes que vous créez.

  • Rendre le jeu plus difficile en masquant la première icône si le joueur est trop lent pour répondre.

Étapes suivantes

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

  • Objets stockés, tels que les icônes, dans une liste
  • Utilisation d’une boucle en C# ou Visual Basic pour itérer dans une liste
  • Tenir à jour l'état en utilisant des variables de référence
  • Créer un gestionnaire d’événements pour répondre aux événements pour plusieurs objets
  • Ajout d’un minuteur qui compte et déclenche un événement

Passez à cet article pour une présentation approfondie du Concepteur Windows Forms.