Skip to content

Solution possible au laboratoire : Jeu du pendu

static void Main(string[] args)
{
    Random random = new Random();
    // Les mots pour deviner
    string[] mots = { "boucle", "condition", "variable" };
    string mot = mots[random.Next(0, mots.Length)];
    string motCache = "";
    string lettre = "";
    bool lettreDansMot = false;
    bool motDevine = false;
    int essai = 5;

    for (int i = 0; i < mot.Length; i++)
    {
        motCache += "*";
    }

    // Afficher les instructions
    Console.WriteLine("Bienvenue au jeu du pendu, vous devez trouver toutes les lettres d'un mot au hasard. \n\n Chaque fois que vous choisissez une lettre : \n - Les lettres sont affichées à la bonne place dans le mot caché\n ou \n - Un essai de moins \n\n La partie est gagnée quand toutes les lettre sont trouvées\n ou perdues quand il n'y a plus d'essai \n Enter pour continuer.");
    Console.ReadLine();

    // Choisir un mot à deviner
    // Fait en même temps que l'initialisation de la variable mot

    // Tant que je n'ai pas deviné le mot et que j'ai des essais
    while(!motDevine && essai > 0)
    {
        // Demander à l'utilisateur une lettre
        Console.Clear();
        Console.WriteLine("Entrer une lettre :");
        lettre = Console.ReadLine();

        // Vérifier si la lettre est dans le mot
        lettreDansMot = verifierSiLettreDansMot(mot, lettre);

        // Si la lettre est dans le mot 
        if (lettreDansMot)
        {
            // Ajuster le mot caché
            motCache = ajusterMotCache(mot,motCache, lettre);
        }
        // Sinon perd un essai
        else
        {
            essai--;
        }

        // Vérifier si le mot est complet
        if (motCache == mot)
        {
            motDevine = true;
        }

        // Afficher résultat du tour
        Console.WriteLine("Mot : " + motCache);
        Console.WriteLine("Essais restant : " + essai);
        Console.WriteLine("Appuyer sur Entrer pour continuer.");
        Console.ReadLine();
    }

    // Afficher le résultat
    if (motDevine)
    {
        Console.WriteLine("Gagné!");
    }
    else
    {
        Console.WriteLine("Perdu...");
    }
}

static bool verifierSiLettreDansMot(string mot, string lettre)
{
    bool present = false;

    for (int i = 0; i < mot.Length; i++)
    {
        if (mot[i] == lettre[0])
        {
            present = true;
        }
    }
    return present;
}

static string ajusterMotCache(string mot, string motCache, string lettre)
{
    string nouveauMotCache = "";

    for (int i = 0; i < mot.Length; i++)
    {
        if (mot[i] == lettre[0])
        {
            nouveauMotCache += lettre[0];
        }
        else
        {
            nouveauMotCache += motCache[i];
        }
    }

    return nouveauMotCache;
}