private void Chk_randomOrderQuestions_CheckedChanged(object sender, EventArgs e) { Quiz.ProgressData.AskQuestionsInRandomOrder = chk_randomOrderQuestions.Checked; CardPicker.NewRound(Quiz); Program.frmQuizPractise.SetCard(); QuizCore.SaveQuizProgress(Quiz); }
private void InQuiz_FormClosing(object sender, FormClosingEventArgs e) { QuizCore.SaveQuizProgress(Quiz); if (exitAppOnClose) { Application.Exit(); } }
private void Chk_intelligentLearning_CheckedChanged(object sender, EventArgs e) { Quiz.ProgressData.FullTestInProgress = !chk_intelligentLearning.Checked; CardPicker.NewRound(Quiz); Program.frmQuizPractise.SetCard(); Program.frmQuizPractise.UpdateCardSideTypeLabels(); QuizCore.SaveQuizProgress(Quiz); }
private void Rdo_answerFront_CheckedChanged(object sender, EventArgs e) { Quiz.ProgressData.AnswerCardSide = rdo_answerFront.Checked ? QuizProgressData.CardSide.Front : QuizProgressData.CardSide.Back; CardPicker.NewRound(Quiz); Program.frmQuizPractise.SetCard(); Program.frmQuizPractise.UpdateCardSideTypeLabels(); QuizCore.SaveQuizProgress(Quiz); }
private void nud_minAnsTriesSkip_ValueChanged(object sender, EventArgs e) { Quiz.ProgressData.MinimumTriesCountToConsiderSkippingQuestion = (int)nud_minAnsTriesSkip.Value; if (!Quiz.ProgressData.FullTestInProgress) { CardPicker.NewRound(Quiz); Program.frmQuizPractise.SetCard(); QuizCore.SaveQuizProgress(Quiz); } }
private void Rdo_lastNattemptsIntelligentLearning_CheckedChanged(object sender, EventArgs e) { if (rdo_lastNattemptsIntelligentLearning.Checked) { Quiz.ProgressData.IntelligentLearningLastAnswersBasisCount = (int)nud_intelligentLearningAttempsCount.Value; if (!Quiz.ProgressData.FullTestInProgress) { CardPicker.NewRound(Quiz); Program.frmQuizPractise.SetCard(); QuizCore.SaveQuizProgress(Quiz); } } }
/// <summary> /// Marks all Cards as not answered this round, lowers the RoundToSkip variables and updated CurrentCards with a new selection. /// </summary> /// <param name="quiz"></param> public static void NewRound(Quiz quiz) { quiz.ProgressData.CorrectAnswersThisRound = 0; if (!quiz.ProgressData.FullTestInProgress) { var possibleCards = (from x in quiz.Cards let progress = x.GetProgressData(quiz) where progress.RoundsToSkip == 0 orderby progress.GetLearningProgress(quiz.ProgressData) ascending select x.Guid).ToList(); if (possibleCards.Count > 0) { quiz.ProgressData.CurrentCards = possibleCards.Take(10).ToList(); } else { var indexes = Enumerable.Range(0, 5).ToList(); Shuffle(indexes); quiz.ProgressData.CurrentCards = indexes .Where(i => i <= quiz.Cards.Count() - 1) .Select(i => quiz.Cards[i].Guid).ToList(); } } else { quiz.ProgressData.CurrentCards = quiz.Cards.Select(x => x.Guid).ToList(); Shuffle(quiz.ProgressData.CurrentCards); } quiz.ProgressData.CurrentCard = Guid.Empty; // Update RoundsToSkip foreach (var cardProgress in quiz.ProgressData.CardProgress) { cardProgress.AskedThisRound = false; if (cardProgress.RoundsToSkip > 0) { --cardProgress.RoundsToSkip; } } QuizCore.SaveQuizProgress(quiz); }