Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créations d'un quiz simple en console

24 novembre 2017 à 22:27:02

Bonjour à tous,

Je crée un quiz en console et j'aimerais un peu d'aide :

- Je voudrais que l'on ne puisse pas "tirer" deux fois la même question,

- Je voudrais faire passer dans le tableaux des paramètre (la réponse correcte sous forme de lettre)

Pour l'instant : 

- La même question apparait deux fois d'affilé

- On ne peut répondre que par C, et ce n'est pas toujours la bonne réponse

Le code :

namespace OpenClassrooms
{
    class Program
    {
        static void Main(string[] args)
        {
            int points = 0;
            

            string[] questions = new string[7];
            questions[0] = "En quelle année est sortie la première version de Minecraft ?" + Environment.NewLine + "A = 16 mai 2009" + Environment.NewLine + "B = 25 octobre 2005" + Environment.NewLine + "C = 19 novembre 2011" + Environment.NewLine + "D = 16 mai 2008";
            questions[1] = "Qui est le créateur de Minecraft ?" + Environment.NewLine + "A = Mojang" + Environment.NewLine + "B = Markus Persson" + Environment.NewLine + "C = Microsoft" + Environment.NewLine + "D = Steve Jobs";
            questions[2] = "Quel block n'éxiste pas dans Minecraft ?" + Environment.NewLine + "A = La terre (dirt)" + Environment.NewLine + "B = Le diamand (diamond)" + Environment.NewLine + "C = Le carton (cardboard)" + Environment.NewLine + "D = Le bois (wood)";
            

            int vie = 3;
            while (true)
            {
                if (vie == 0)
                {
                    break;
                }
                int question = new Random().Next(0, 2);
                Console.WriteLine(questions[question]);
                ConsoleKeyInfo reponse1 = Console.ReadKey(true);
                if (reponse1.Key == ConsoleKey.C)
                {
                    Console.WriteLine("Juste !!!");
                    points++;
                }
                else
                {
                    Console.WriteLine("Faux...");
                    vie--;
                }
                Console.WriteLine("Vous avez " + points + " points !");
                Console.WriteLine("Il vous reste " + vie + " vies !");
            }

        }
    }
}

Merci d'avance !

  • Partager sur Facebook
  • Partager sur Twitter
Coucou, passes voir mon site : UnChaqueJour.com !
25 novembre 2017 à 3:33:34

Hello,

Comme tous les débutants qui utilisent Random sans regarder comment ça fonctionne et qui ensuite nous posent la question (sans rire une fois toutes les semaines) tu t'en sers mal :p Il faut créer un objet Random que tu utiliseras tout au long de la durée de vie de ton programme en utilisant Next() et ne pas le recréer à chaque tour de boucle.

Mais, si tu ne veux pas avoir deux fois la même question, il vaut mieux mélanger ton tableau et tirer les questions les unes à la suite des autres, contrairement à Random tu es sûr de ne pas avoir deux fois la même de cette manière.

Tu peux suivre la même logique pour A, B et D que pour C mais il faudrait un peu compliquer ton objet Question. Ta Question devrait être une classe qui contient une question, 4 réponses potentielles et la lettre associée à la réponse valide. Comme ça tu crées un tableau de question et tu compares la lettre donnée par le joueur à la lettre stockée dans la Question pour chaque tour de boucle ;)

  • Partager sur Facebook
  • Partager sur Twitter
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)