コード例 #1
0
    public void DefinirAfirmacoes(Afirmacao afirmacaoVerdadeira, Afirmacao[] afirmacoesFalsas)
    {
        // Ignorar se não houver "slots" disponíveis pra encaixar as afirmações
        if (afirmacoesQuizMultiplaEscolha.Length == 0)
        {
            return;
        }

        // Se receber + que o número limite de afirmações deste objeto, que é
        // igual a afirmacoesQuizMultiplaEscolha.Length, não tentar adicionar + que o limite
        var quantidade = (afirmacoesFalsas.Length + 1 <= afirmacoesQuizMultiplaEscolha.Length) ? (afirmacoesFalsas.Length + 1) : afirmacoesQuizMultiplaEscolha.Length;

        // Juntar afirmação verdadeira e afirmações falsas em um único array
        var afirmacoes = new Afirmacao[quantidade];

        afirmacoes[0] = afirmacaoVerdadeira;
        for (int i = 1; i < quantidade; i++)
        {
            afirmacoes[i] = afirmacoesFalsas[i - 1];
        }

        // Embaralhar as afirmações usando algoritmo Fisher–Yates Shuffle, O(n)
        for (int i = quantidade - 1; i > 0; i--)
        {
            var randomIndex = Random.Range(0, i + 1);
            var temp        = afirmacoes[randomIndex];
            afirmacoes[randomIndex] = afirmacoes[i];
            afirmacoes[i]           = temp;
        }

        for (var i = 0; i < quantidade; i++)
        {
            afirmacoesQuizMultiplaEscolha[i].Afirmacao = afirmacoes[i];
        }
    }
コード例 #2
0
    public void ConfigurarQuiz(NivelDeEnsino nivelDeEnsino, Inteligencias inteligencias)
    {
        Afirmacao[] afirmacoesDisponiveis;
        string      enunciadoDoQuiz;
        Sprite      spriteDoIconeDoQuiz;

        // Sorteio entre 0 e 1.
        // Se sair 0, o quiz será sobre nível de ensino
        // Se sair 1, o quiz será sobre Inteligências Múltiplas
        //int zeroOuUm = Random.Range(0, 2);
        int zeroOuUm = 1;

        if (zeroOuUm == 0)
        {
            this.NivelDeEnsino    = nivelDeEnsino;
            enunciadoDoQuiz       = "Analise as afirmativas abaixo e selecione a(s) correta(s) sobre " + nivelDeEnsino.nome;
            spriteDoIconeDoQuiz   = nivelDeEnsino.Sprite;
            afirmacoesDisponiveis = AfirmacaoSobreNivelDeEnsino.ObterTodasAsAfirmacoes(nivelDeEnsino);
        }
        else // ZeroOuUm == 1
        {
            this.Inteligencias    = inteligencias;
            enunciadoDoQuiz       = "Analise as afirmativas abaixo e selecione a(s) correta(s) sobre o par de inteligências " + inteligencias.Nome;
            spriteDoIconeDoQuiz   = inteligencias.SpriteGrande;
            afirmacoesDisponiveis = AfirmacaoSobreInteligencias.ObterTodasAsAfirmacoes(inteligencias);
        }

        // Selecionar algumas dessas afirmações para colocar no quiz
        var afirmacoesDoQuiz = new Afirmacao[quantidadeDeAfirmacoesNoQuiz];
        // Selecionar pelo menos uma afirmação verdadeira
        var afirmacoesVerdadeiras = afirmacoesDisponiveis.Where(a => a.Verdadeira);
        var indiceAleatorio       = Random.Range(0, afirmacoesVerdadeiras.Count());

        afirmacoesDoQuiz[0] = afirmacoesVerdadeiras.ElementAt(indiceAleatorio);
        // Selecionar as outras afirmações do quiz, que podem ou não serem verdadeiras
        for (int i = 1; i < quantidadeDeAfirmacoesNoQuiz; i++)
        {
            // Remover das afirmações disponíveis as afirmações selecionadas
            afirmacoesDisponiveis = afirmacoesDisponiveis.Except(afirmacoesDoQuiz).ToArray();
            indiceAleatorio       = Random.Range(0, afirmacoesDisponiveis.Count());
            var afirmacaoAleatoria = afirmacoesDisponiveis.ElementAt(indiceAleatorio);
            afirmacoesDoQuiz[i] = afirmacaoAleatoria;
        }

        formatoDoQuiz = Instantiate(prefabQuizVF, canvas.transform);
        formatoDoQuiz.TextoDoEnunciado   = enunciadoDoQuiz;
        formatoDoQuiz.IconeDoQuiz.sprite = spriteDoIconeDoQuiz ? spriteDoIconeDoQuiz : spritePadraoDoIconeDoQuiz;
        formatoDoQuiz.DefinirAfirmacoes(afirmacoesDoQuiz);
    }