Пример #1
0
        /* The StartTest MessageHandler
         * It handles messages of START_TEST_REQUEST type.
         */
        private static void StartTest(RMessage message, TcpClient connection)
        {
            List <DomainData> reqDomains = (List <DomainData>)message.Data;

            List <QuizSetData> quizList = new List <QuizSetData>();

            for (int i = 0; i < reqDomains.Count; ++i)
            {
                // Get all questions from the database
                List <QuizItemData> allQuestions =
                    QuizItemConnector.GetAllItems(reqDomains[i].ID);

                // Select random questions from the set
                List <int> selected =
                    GetRandoms(allQuestions.Count, QUESTIONS_PER_SET);

                // Create a new QuizSet with the selected questions
                QuizSetData quizSet = new QuizSetData(reqDomains[i].Name);
                for (int j = 0; j < QUESTIONS_PER_SET; ++j)
                {
                    quizSet.AddQuestion(allQuestions[selected[j]]);
                }
                quizList.Add(quizSet);
            }

            RMessage replyMessage =
                new RMessage(
                    MessageType.START_TEST_REPLY,
                    quizList);

            ServerCore.GetWorkerByConnection(connection).SendMessage(replyMessage);
        }
Пример #2
0
        // Finish the current quiz set
        public void FinishQuizSet()
        {
            int         nrCorrect = 0;
            QuizSetData quiz      = model.CurrentQuiz;

            for (int i = 0; i < quiz.Question.Count; ++i)
            {
                if (quiz.Question[i].Answer == quiz.Question[i].Correct)
                {
                    ++nrCorrect;
                }
            }
            model.SetScoreForCurrentTest(nrCorrect);
            if (model.IsLastSet())
            {
                AllTestsFinished(model);
            }
            else
            {
                model.GetNextSet();
                StartSet();
            }
        }