public static IQuest GetRandomAvailableQuestion(Model type, List <int> actual_chosen)
        {
            double actual_index = 0;

            var quests = Get(type).Where(x => x.IsActive && !actual_chosen.Contains(x.Id));

            foreach (var quest in quests)
            {
                actual_index    += quest.Chance;
                quest.Index_show = actual_index;
            }

            var totalChances      = quests.Select(x => x.Chance).Sum();
            int pickBasedOnChance = UtilWPF.RandomNumber(0, (int)totalChances);

            IQuest selected = quests.First();

            double cumulative = 0.0;

            for (int i = 0; i < quests.Count(); i++)
            {
                cumulative += quests.ElementAt(i).Chance;
                if (pickBasedOnChance < cumulative)
                {
                    selected = quests.ElementAt(i);
                    break;
                }
            }

            return(selected);
        }
예제 #2
0
        private void BtnFinish_Click(object sender, RoutedEventArgs e)
        {
            lblScore.Visibility = Visibility.Visible;
            var result = TemplateWPF.CheckAnswers(CellList);

            lblScore.Content    = result.Item1;
            lblScore.Foreground = UtilWPF.GetAvgColor(result.Item2);

            btnFinish.IsEnabled = false;
        }
        public static ChalLine CreateChalLine(IQuest quest, int row, Grid userControlGrid, Microsoft.Office.Interop.Word.Application wordApp = null)
        {
            var line = new ChalLine();

            line.Quest = quest;

            line.Chal.Grid_chal = MyGrids.GetChallenge(row, userControlGrid);

            MyStacks.Get(line.Chal.Row_1, 0, 0, line.Chal.Grid_chal);
            line.Chal.Row_1.Visibility = Visibility.Collapsed;

            MyLbls.Chal_answer(line.Chal.Answer, line.Chal.Row_1, quest.Text);

            if (quest is VocModel voc)
            {
                MyLbls.Get(line.Chal.PtBr, line.Chal.Row_1, voc.PtBr);
                line.Chal.PtBr.Foreground = Brushes.DarkBlue;
                MyLbls.Get(line.Chal.Definition, line.Chal.Row_1, voc.Definition);
            }

            var stk_2 = BuildSenChal(line, wordApp);

            UtilWPF.SetGridPosition(stk_2, 1, 0, line.Chal.Grid_chal);

            MyGrids.GetRow(line.Chal.Row_3, 2, 0, line.Chal.Grid_chal, new List <int>()
            {
                1, 1, 1, 1, 1, 1
            });
            line.Chal.Row_3.Visibility = Visibility.Collapsed;
            MyLbls.AvgScore(line.Chal.Avg_w, 0, 0, line.Chal.Row_3, line.Quest, 7, false);
            MyLbls.AvgScore(line.Chal.Avg_m, 0, 1, line.Chal.Row_3, line.Quest, 30, false);
            MyLbls.AvgScore(line.Chal.Avg_all, 0, 2, line.Chal.Row_3, line.Quest, 2000, false);
            MyLbls.Tries(line.Chal.Tries, 0, 3, line.Chal.Row_3, line.Quest);
            MyLbls.Get(line.Chal.Importante, 0, 4, line.Chal.Row_3, line.Quest.Importance.ToDesc());
            MyLbls.Chance(line.Chal.Chance, 0, 5, line.Chal.Row_3, line.Quest);
            line.Chal.Chance.Content.ToString().Insert(0, "was ");

            MyGrids.GetRow(line.Chal.Row_4, 3, 0, line.Chal.Grid_chal, new List <int>()
            {
                2, 1, 2, 1, 2
            });
            line.Chal.Row_4.Visibility = Visibility.Collapsed;

            MyBtns.Chal_remove_att(line);
            MyLbls.Chal_quest_id(line, 2);
            MyBtns.Chal_disable_quest(line);

            return(line);
        }
        private static void CheckIfItemWasEdited(SenVM_Deprecated sen, TextBox txt_sen, Button btn_edit)
        {
            var wasTextEdited = txt_sen.Text != sen.Text;

            if (wasTextEdited)
            {
                btn_edit.IsEnabled = true;
                btn_edit.Content   = UtilWPF.GetIconButton("save");
            }
            else
            {
                btn_edit.IsEnabled = false;
                btn_edit.Content   = new FormatConvertedBitmap(btn_edit.Content as BitmapSource, PixelFormats.Gray32Float, null, 50);
            }
        }
예제 #5
0
        public static void ShowScoredTemplate(List <CellTemplate> cellList, int lastDays)
        {
            foreach (var item in cellList)
            {
                item.Quest.LoadCrossData();

                if (item.Quest.Tries.Count != 0)
                {
                    var avg = item.Quest.GetAverageScoreByTime(lastDays);
                    item.Lbl.Foreground = UtilWPF.GetAvgColor(avg);

                    var tries_period    = item.Quest.Tries.Where(x => x.When >= (DateTime.Now.AddDays(-lastDays)));
                    var corrects_period = tries_period.Where(x => x.Score == 10);
                    item.Lbl.ToolTip = corrects_period.Count() + " / " + tries_period.Count();
                }
            }
        }