示例#1
0
        private async void ClickSC(UnidadeDoExperimento SC, Label labelMensagem, PictureBox pictureSC)
        {
            Feedback feedback    = SC.Feedback;
            bool     positivo    = feedback.ValorClick > 0;
            Color    novaCor     = positivo ? Color.Green : Color.Red;
            string   mensagem    = feedback.Neutro ? "NEUTRO!" : positivo ? "CORRETO!" : "ERRADO!";
            string   textoEvento = $"Sessão {sessaoAtual.Nome}; MTS {CCAtual.Nome}; SC da imagem {SC.NomeImagem} {mensagem} tocado";

            sessaoAtual.NumeroTentativas++;

            if (feedback.ProbabilidadeComplementar >= random.Next(0, 101))
            {
                relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"{textoEvento}, valendo {feedback.ValorClick} pontos", positivo ? 1 : 0));

                if (positivo)
                {
                    sessaoAtual.AcertosConcecutivos++;
                    CCAtual.AcertosConcecutivos++;
                }
                else
                {
                    sessaoAtual.AcertosConcecutivos = 0;
                    CCAtual.AcertosConcecutivos     = 0;
                }

                AtualizaPontos(feedback.ValorClick);

                if (!feedback.Neutro)
                {
                    SC.PlayAudio();
                    labelMensagem.Text      = mensagem;
                    labelMensagem.ForeColor = novaCor;
                    labelMensagem.Visible   = true;
                }

                if (!feedback.SemCor)
                {
                    pictureSC.BackColor = novaCor;
                }
            }
            else
            {
                relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"{textoEvento}, porém não houve feedback por probabilidade", -1));
            }

            await Task.Delay(1000);

            labelMensagem.Visible = false;
            pictureSC.BackColor   = Color.Transparent;

            taskCC.TrySetResult(true);
        }
示例#2
0
        private async Task ApresentarCC(ContingenciaColateral CC)
        {
            taskCC      = new TaskCompletionSource <bool>(false);
            taskSModelo = new TaskCompletionSource <bool>(false);

            CCAtual = CC;
            pictureSModelo.Visible   = true;
            pictureSModelo.Image     = ImageUtils.Resize(CC.sModelo.Imagem, imageWidth, imageHeight);
            pictureSModelo.BackColor = Color.Transparent;
            List <UnidadeDoExperimento> SCs = new List <UnidadeDoExperimento>()
            {
                CC.SC1, CC.SC2, CC.SC3
            };

            await taskSModelo.Task;
            UnidadeDoExperimento sModelo = CC.sModelo;

            relatorioSessao.AdicionarEvento(sessaoAtual.Id, new Evento($"Sessão {sessaoAtual.Nome}; MTS {CC.Nome}; SModelo da imagem {sModelo.NomeImagem} tocado"));

            if (sModelo.Feedback != null && !sModelo.Feedback.SemCor)
            {
                pictureSModelo.BackColor = Color.Green;
            }
            sModelo.PlayAudio();

            pictureSC3.Visible = true;
            if (!CC.SC1.Feedback.Neutro && !CC.SC2.Feedback.Neutro && !CC.SC3.Feedback.Neutro)
            {
                panelPontos.Visible = true;
            }
            pictureSC2.Visible = true;
            pictureSC1.Visible = true;

            EmbaralhaSCs(SCs);

            await taskCC.Task;
        }
示例#3
0
        private async void ClickBotao(UnidadeDoExperimento SC, Label labelMensagem, PictureBox pictureSC)
        {
            if (SessoesFinalizadas)
            {
                return;
            }

            Feedback feedback = SC.Feedback;

            if (feedback.Neutro || feedback.ValorClick == 0)
            {
                sessaoAtual.AcertosConcecutivos = 0;
                sessaoAtual.NumeroTentativas++;
                relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, 0));
                await Task.Delay(1000);
            }
            else
            {
                if (feedback.ProbabilidadeComplementar > random.Next(0, 100))
                {
                    bool   positivo = feedback.ValorClick > 0;
                    Color  novaCor  = positivo ? Color.Green : Color.Red;
                    string mensagem = positivo ? "CORRETO!" : "ERRADO!";

                    sessaoAtual.NumeroTentativas++;

                    if (positivo)
                    {
                        sessaoAtual.AcertosConcecutivos++;
                        CCAtual.AcertosConcecutivos++;
                    }
                    else
                    {
                        sessaoAtual.AcertosConcecutivos = 0;
                        CCAtual.AcertosConcecutivos     = 0;
                    }

                    AtualizaPontos(feedback.ValorClick);
                    SC.PlayAudio();
                    labelMensagem.Text      = mensagem;
                    labelMensagem.ForeColor = novaCor;
                    labelMensagem.Visible   = true;

                    if (!feedback.SemCor)
                    {
                        pictureSC.BackColor = novaCor;
                    }

                    relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, feedback.ValorClick));
                }
                else
                {
                    relatorioSessao.AdicionarEvento(new EventoSC(sessaoAtual, CCAtual, SC, 0));
                }

                await Task.Delay(1000);

                labelMensagem.Visible = false;
                pictureSC.BackColor   = Color.White;
            }

            ultimoSC = SC;
            taskCC.TrySetResult(true);
        }