Partage
  • Partager sur Facebook
  • Partager sur Twitter

C# Rendre un tirage Aleatoire

Rendre un tirage Aleatoire

    3 septembre 2023 à 11:20:37

    Je débute sur Unity, j'ai suivi un cours et essaie de me familiariser avec tout cela.
    Le Problème que j'essaie de régler est le fait de rendre les questions aléatoires sur un quizz.
    Les Questions restent dans l'ordre de leurs numéro.
    Merci d'avance.
    using Perangonline.PhotonQuis;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
     
    public class QuestionController : MonoBehaviour {
     
        public static QuestionController instance;
        public List<Question> _questions;
        private List<List<Answer>> _answers;
       
     
        [HideInInspector]
        public int questionIndex =0;
     
        public int QuestionIndex
        {
            get
            {
                return questionIndex;
            }
     
            set
            {
                questionIndex = value;
               
            }
           
        }
     
        private void Awake()
        {
            if (instance == null)
                instance = this;
        }
     
        public void LoadQuestions()
        {
            _questions = new List<Question>();
            _answers = new List<List<Answer>>();
           
     
            List<Answer> answersList = new List<Answer>();
     
            _questions.Add(new Question(0, "Quel est le deuxième plus grand continent ?", false));
            answersList.Add(new Answer(1, "Asie", false));
            answersList.Add(new Answer(2, "Europe", false));
            answersList.Add(new Answer(3, "Afrique", true));
            answersList.Add(new Answer(4, "Australie", false));
            _answers.Add(answersList);
     
     
            _questions.Add(new Question(22, "Quel animal est le plus gros ?", false));
            answersList = new List<Answer>();
            answersList.Add(new Answer(1, "Calmar Géant", false));
            answersList.Add(new Answer(2, "Baleine Bleu", true));
            answersList.Add(new Answer(3, "Elephant d'Afrique", false));
            answersList.Add(new Answer(4, "Girafe", false));
            _answers.Add(answersList);
     
         
        }
        public void Next()
        {
            if( QuestionIndex < _questions.Count  )
            {
                GameUIController.instance.ShowQuestion(_questions[QuestionIndex], _answers[QuestionIndex]);
                GameUIController.instance.EnableBuzzer(true);
                GameUIController.instance.EnableAnswers(false);
     
                QuestionIndex++;
            }
            else
            {
                GameUIController.instance.ShowResult();
                GameUIController.instance.EnableBuzzer(false);
                GameUIController.instance.EnableAnswers(false);
            }
     
     
        }
     
     
        public void Next(int index)
        {
     
            if (index < _questions.Count )
            {
                GameUIController.instance.ShowQuestion(_questions[index], _answers[index]);
                GameUIController.instance.EnableBuzzer(true);
                GameUIController.instance.EnableAnswers(false);
            }
            else
            {
                GameUIController.instance.ShowResult();
                GameUIController.instance.EnableBuzzer(false);
                GameUIController.instance.EnableAnswers(false);
            }
     
               
           
     
        }
    }

    • Partager sur Facebook
    • Partager sur Twitter
      4 septembre 2023 à 8:41:30

      C'est sensé être mélangé où ?
      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        5 septembre 2023 à 3:35:47

        Pour le moment ca ne l'est pas, j'aimerai mélanger les questions pour rendre le tirage aléatoire.
        • Partager sur Facebook
        • Partager sur Twitter
          5 septembre 2023 à 11:56:40

          tu ne mélanges pas les questions, mais tu tires une liste d'index de question au hasard parmi les numéros de questions.

          Tips: il y a une classe random

          -
          Edité par umfred 5 septembre 2023 à 12:01:16

          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2023 à 12:10:17

            Alors j'ai réussi a rendre les questions aléatoires, mais

            maintenant un autre problème se pose. Je ne sais pas comment éviter qu'elles ne se répètent,

            je sais qu'il faut les retirer de l'index quand elles sortent mais je ne sais pas comment.

             public int questionIndex = 0;
            
                public int QuestionIndex
                {
                    get
                    {
                       
                        return questionIndex;  
                    }
            
                    set
                    {
                        questionIndex =  Random.Range(0,_questions.Count);
                        
                    }
                        
                }



            • Partager sur Facebook
            • Partager sur Twitter
              18 septembre 2023 à 11:36:55

              Pourquoi ne pas simplement l'enlever de la liste des questions ?

              List<T>.RemoveAt(Int32) Method (System.Collections.Generic) | Microsoft Learn

              • Partager sur Facebook
              • Partager sur Twitter
              Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                18 septembre 2023 à 15:36:30

                Dans mon esprit, avec Random, tu tirais au hasard un nombre, et tu alimentais une liste des questions à poser à partir de la liste initiale des questions. Et tu utilises cette liste pour poser les questions.
                • Partager sur Facebook
                • Partager sur Twitter

                C# Rendre un tirage Aleatoire

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown