예제 #1
0
        public void WordsInPhraseTest()
        {
            var builderParams = SetupFakeGame();
            var builder       = new WordsInPhraseQuestionBuilder(nPacks: nPacks, nCorrect: nCorrect, nWrong: nWrong, useAllCorrectWords: false, usePhraseAnswersIfFound: true, parameters: builderParams);

            builder.CreateAllQuestionPacks();
        }
예제 #2
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            var builderParams = InitQuestionBuilderParamaters();

            switch (Variation)
            {
            case ReadingGameVariation.SongAlphabet:
            case ReadingGameVariation.SongDiacritics:
                builder = new EmptyQuestionBuilder();
                break;

            case ReadingGameVariation.ReadingGame_Words:
                builderParams.wordFilters.requireDrawings         = true;
                builderParams.phraseFilters.requireAnswersOrWords = true;
                builder = new WordsInPhraseQuestionBuilder(nPacks: 10, nCorrect: 1, nWrong: 6,
                                                           usePhraseAnswersIfFound: true, parameters: builderParams);
                break;

            case ReadingGameVariation.Song_Word_Animals:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.Animals);
                break;

            case ReadingGameVariation.Song_Word_Nature:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.Nature);
                break;

            case ReadingGameVariation.Song_Word_Home:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.Home);
                break;

            case ReadingGameVariation.Song_Word_ObjectsClothes:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.Objects, WordDataCategory.Clothes);
                break;

            case ReadingGameVariation.Song_Word_City:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.City);
                break;

            case ReadingGameVariation.Song_Word_Family:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.Family);
                break;

            case ReadingGameVariation.Song_Word_Food:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.Food);
                break;

            case ReadingGameVariation.Song_Word_Body:
                builder = CreateCategoryGameBuilder(builderParams, WordDataCategory.Body);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
예제 #3
0
        public int N_ROUNDS = 15;   // a few more than the base line to allow for more errors

        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = N_ROUNDS;
            int nCorrect = 1;
            int nWrong   = 5;

            var builderParams = InitQuestionBuilderParamaters();

            switch (Variation)
            {
            case MissingLetterVariation.LetterInWord:
                // Find a letter with the given form inside the word (no diacritics)
                // wrong answers are other letters in different forms & diacritics
                builderParams.letterFilters.excludeDiacritics = LetterFilters.ExcludeDiacritics.All;
                builderParams.letterFilters.excludeDiphthongs = true;
                builderParams.wordFilters.excludeDipthongs    = true;
                builder = new LetterAlterationsInWordsQuestionBuilder(nPacks, 1, parameters: builderParams, keepBasesOnly: false, letterAlterationFilters: LetterAlterationFilters.FormsAndPhonemesOfMultipleLetters);
                break;

            case MissingLetterVariation.LetterForm:
                // Find the correct form of the letter in the given word
                // wrong answers are the other forms of the same letter (not the same visually, tho)
                builder = new LetterAlterationsInWordsQuestionBuilder(nPacks, 1, parameters: builderParams, keepBasesOnly: false, letterAlterationFilters: LetterAlterationFilters.VisualFormsOfSingleLetter);
                break;

            case MissingLetterVariation.Phrase:
                builderParams.phraseFilters.requireWords  = true;
                builderParams.phraseFilters.maxWords      = 6;
                builderParams.wordFilters.requireDrawings = true;
                builder = new WordsInPhraseQuestionBuilder(nPacks, nCorrect, nWrong, usePhraseAnswersIfFound: true, parameters: builderParams);
                break;

            case MissingLetterVariation.Image:
                builderParams.wordFilters.requireDrawings = true;
                builder = new RandomWordsQuestionBuilder(nPacks, nCorrect, nWrong, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(builder);
        }
예제 #4
0
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            var builderParams = new Teacher.QuestionBuilderParameters();

            switch (Variation)
            {
            case ReadingGameVariation.AlphabetSong:
                builder = new EmptyQuestionBuilder();
                break;

            case ReadingGameVariation.ReadAndAnswer:
                builderParams.wordFilters.excludeColorWords       = true;
                builderParams.wordFilters.requireDrawings         = true;
                builderParams.phraseFilters.requireAnswersOrWords = true;
                builder = new WordsInPhraseQuestionBuilder(nPacks: 10, nCorrect: 1, nWrong: 6, usePhraseAnswersIfFound: true, parameters: builderParams);
                break;
            }
            return(builder);
        }
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = 10;
            int nCorrect = 1;
            int nWrong   = 5;

            var builderParams = new Teacher.QuestionBuilderParameters();

            switch (Variation)
            {
            case MissingLetterVariation.MissingLetter:
                builder = new LettersInWordQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

            case MissingLetterVariation.MissingWord:
                builderParams.phraseFilters.requireWords           = true;
                builderParams.phraseFilters.requireAtLeastTwoWords = true;
                builder = new WordsInPhraseQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;
            }
            return(builder);
        }
예제 #6
0
        private void SimulateQuestionBuilder(QuestionBuilderType builderType)
        {
            LetterAlterationFilters letterAlterationFilters = null;

            switch (lettersVariationChoice)
            {
            case 0:
                letterAlterationFilters = LetterAlterationFilters.FormsOfSingleLetter;
                break;

            case 1:
                letterAlterationFilters = LetterAlterationFilters.FormsOfMultipleLetters;
                break;

            case 2:
                letterAlterationFilters = LetterAlterationFilters.MultipleLetters;
                break;

            case 3:
                letterAlterationFilters = LetterAlterationFilters.PhonemesOfSingleLetter;
                break;

            case 4:
                letterAlterationFilters = LetterAlterationFilters.PhonemesOfMultipleLetters;
                break;

            case 5:
                letterAlterationFilters = LetterAlterationFilters.FormsAndPhonemesOfMultipleLetters;
                break;
            }


            var builderParams        = SetupBuilderParameters();
            IQuestionBuilder builder = null;

            switch (builderType)
            {
            case QuestionBuilderType.RandomLetters:
                builder = new RandomLettersQuestionBuilder(nPacks: nPacks, nCorrect: nCorrectAnswers, nWrong: nWrongAnswers, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

            case QuestionBuilderType.RandomLetterForms:
                builder = new RandomLetterAlterationsQuestionBuilder(nPacks: nPacks, nCorrect: nCorrectAnswers, nWrong: nWrongAnswers, letterAlterationFilters: letterAlterationFilters, parameters: builderParams);
                break;

            case QuestionBuilderType.Alphabet:
                builder = new AlphabetQuestionBuilder(parameters: builderParams);
                break;

            case QuestionBuilderType.LettersBySunMoon:
                builder = new LettersBySunMoonQuestionBuilder(nPacks: nPacks, parameters: builderParams);
                break;

            case QuestionBuilderType.LettersByType:
                builder = new LettersByTypeQuestionBuilder(nPacks: nPacks, parameters: builderParams);
                break;

            case QuestionBuilderType.LettersInWord:
                builder = new LettersInWordQuestionBuilder(nRounds: nPacks, nPacksPerRound: nPacksPerRound, nCorrect: nCorrectAnswers, nWrong: nWrongAnswers, useAllCorrectLetters: true, parameters: builderParams);
                break;

            case QuestionBuilderType.LetterFormsInWords:
                builder = new LetterFormsInWordsQuestionBuilder(nPacks, nPacksPerRound, parameters: builderParams);
                break;

            case QuestionBuilderType.LetterAlterationsInWords:
                builder = new LetterAlterationsInWordsQuestionBuilder(nPacks, nPacksPerRound, parameters: builderParams, letterAlterationFilters: letterAlterationFilters);
                break;

            case QuestionBuilderType.CommonLettersInWords:
                builder = new CommonLetterInWordQuestionBuilder(nPacks: nPacks, nWrong: nWrongAnswers, parameters: builderParams);
                break;

            case QuestionBuilderType.RandomWords:
                builder = new RandomWordsQuestionBuilder(nPacks: nPacks, nCorrect: nCorrectAnswers, nWrong: nWrongAnswers, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

            case QuestionBuilderType.OrderedWords:
                builderParams.wordFilters.allowedCategories = new[] { WordDataCategory.Numbers };
                builder = new OrderedWordsQuestionBuilder(parameters: builderParams);
                break;

            case QuestionBuilderType.WordsWithLetter:
                builder = new WordsWithLetterQuestionBuilder(nRounds: nPacks, nPacksPerRound: nPacksPerRound, nCorrect: nCorrectAnswers, nWrong: nWrongAnswers, parameters: builderParams);
                break;

            case QuestionBuilderType.WordsByForm:
                builder = new WordsByFormQuestionBuilder(nPacks: nPacks, parameters: builderParams);
                break;

            case QuestionBuilderType.WordsByArticle:
                builder = new WordsByArticleQuestionBuilder(nPacks: nPacks, parameters: builderParams);
                break;

            case QuestionBuilderType.WordsBySunMoon:
                builder = new WordsBySunMoonQuestionBuilder(nPacks: nPacks, parameters: builderParams);
                break;

            case QuestionBuilderType.WordsInPhrase:
                builder = new WordsInPhraseQuestionBuilder(nPacks: nPacks, nCorrect: nCorrectAnswers, nWrong: nWrongAnswers, useAllCorrectWords: false, usePhraseAnswersIfFound: true, parameters: builderParams);
                break;

            case QuestionBuilderType.PhraseQuestions:
                builder = new PhraseQuestionsQuestionBuilder(nPacks: nPacks, nWrong: nWrongAnswers, parameters: builderParams);
                break;
            }

            var questionPacksGenerator = new QuestionPacksGenerator();

            questionPacksGenerator.GenerateQuestionPacks(builder);
        }