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;
}