Exemple #1
0
 public WordsWithLetterQuestionBuilder(int nPacks, int nCorrect             = 1, int nWrong = 0,
                                       QuestionBuilderParameters parameters = null)
 {
     if (parameters == null)
     {
         parameters = new QuestionBuilderParameters();
     }
     this.nPacks     = nPacks;
     this.nCorrect   = nCorrect;
     this.nWrong     = nWrong;
     this.parameters = parameters;
 }
Exemple #2
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = 10;
            int nCorrect = 4;
            int nWrong   = 4;

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case FastCrowdVariation.Alphabet:
                builder = new AlphabetQuestionBuilder();
                break;

            case FastCrowdVariation.Counting:
                builder = new OrderedWordsQuestionBuilder(WordDataCategory.Number, builderParams, false);
                break;

            case FastCrowdVariation.LetterName:
                // Only base letters
                builderParams.letterFilters.excludeDiacritics = LetterFilters.ExcludeDiacritics.All;
                builderParams.wrongSeverity = SelectionSeverity.AsManyAsPossible;
                builder = new RandomLettersQuestionBuilder(nPacks, 5, 0, parameters: builderParams);
                break;

            case FastCrowdVariation.LetterForm:
                // @note: we pass 4 as nCorrect, so we get all the four forms of a single letter, which will be shown one after the other
                builder = new RandomLetterAlterationsQuestionBuilder(nPacks, 4, nWrong, letterAlterationFilters: LetterAlterationFilters.FormsOfSingleLetter);
                break;

            case FastCrowdVariation.BuildWord:
                builderParams.wordFilters.excludeColorWords = true;
                builderParams.wordFilters.requireDrawings   = true;
                builderParams.wordFilters.excludeDipthongs  = true;
                builder = new LettersInWordQuestionBuilder(nPacks, nWrong: nWrong, useAllCorrectLetters: true,
                                                           parameters: builderParams);
                break;

            case FastCrowdVariation.Word:
                builderParams.wordFilters.excludeColorWords = true;
                builderParams.wordFilters.requireDrawings   = true;
                builder = new RandomWordsQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Exemple #3
0
        QuestionBuilderParameters SetupBuilderParameters()
        {
            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory = correctHistory;
            builderParams.wrongChoicesHistory   = wrongHistory;
            builderParams.correctSeverity       = correctSeverity;
            builderParams.wrongSeverity         = wrongSeverity;
            builderParams.useJourneyForCorrect  = journeyEnabledForBase;
            builderParams.useJourneyForWrong    = journeyEnabledForWrong;
            builderParams.sortPacksByDifficulty = sortPacksByDifficulty;
            return(builderParams);
        }
        public RandomLettersQuestionBuilder(int nPacks, int nCorrect = 1, int nWrong = 0, bool firstCorrectIsQuestion = false, QuestionBuilderParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new QuestionBuilderParameters();
            }

            this.nPacks   = nPacks;
            this.nCorrect = nCorrect;
            this.nWrong   = nWrong;
            this.firstCorrectIsQuestion = firstCorrectIsQuestion;
            this.parameters             = parameters;
        }
        public WordsBySunMoonQuestionBuilder(int nPacks, QuestionBuilderParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new QuestionBuilderParameters();
            }

            this.nPacks     = nPacks;
            this.parameters = parameters;

            // Forced parameters
            this.parameters.wordFilters.excludeArticles = false;
        }
        public WordsByFormQuestionBuilder(int nPacks, QuestionBuilderParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new QuestionBuilderParameters();
            }

            this.nPacks     = nPacks;
            this.parameters = parameters;

            // Forced parameters
            this.parameters.wordFilters.excludePluralDual = false;
        }
        private IQuestionBuilder Setup_MatchLettersToWord_Form_Builder()
        {
            SimultaneosQuestions = 2;
            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory = PackListHistory.RepeatWhenFull;
            builderParams.sortPacksByDifficulty = false;

            // TODO: handle forms using the returned letters instead
            return(new LetterFormsInWordsQuestionBuilder(
                       nPacksPerRound: SimultaneosQuestions,
                       nRounds: NumberOfRounds,
                       parameters: builderParams));
        }
        QuestionBuilderParameters SetupFakeGame()
        {
            InitialisePlaySession();

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory = correctHistory;
            builderParams.wrongChoicesHistory   = wrongHistory;
            builderParams.correctSeverity       = correctSeverity;
            builderParams.wrongSeverity         = wrongSeverity;
            builderParams.useJourneyForCorrect  = journeyEnabledForBase;
            builderParams.useJourneyForWrong    = journeyEnabledForWrong;
            return(builderParams);
        }
        private IQuestionBuilder Setup_QuestionAnReply_Builder()
        {
            var builderParams = new QuestionBuilderParameters();

            builderParams.sortPacksByDifficulty = false;

            SimultaneosQuestions = 1;
            int nWrongs = 4;

            return(new PhraseQuestionsQuestionBuilder(
                       SimultaneosQuestions * NumberOfRounds, // totale questions
                       nWrongs,                               // wrong additional answers
                       parameters: builderParams));
        }
Exemple #10
0
        public AlphabetQuestionBuilder(QuestionBuilderParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new QuestionBuilderParameters();
            }

            parameters.letterFilters.excludeLetterVariations = true;
            parameters.letterFilters.excludeDiacritics       = true;
            parameters.wordFilters.excludeLetterVariations   = true;
            parameters.wordFilters.excludeDiacritics         = true;

            this.parameters = parameters;
        }
Exemple #11
0
 public CommonLettersInWordQuestionBuilder(int nPacks, int nMinCommonLetters    = 1, int nMaxCommonLetters = 1, int nWrong = 0, int nWords = 1,
                                           QuestionBuilderParameters parameters = null)
 {
     if (parameters == null)
     {
         parameters = new QuestionBuilderParameters();
     }
     this.nPacks            = nPacks;
     this.nMinCommonLetters = nMinCommonLetters;
     this.nMaxCommonLetters = nMaxCommonLetters;
     this.nWrong            = nWrong;
     this.nWords            = nWords;
     this.parameters        = parameters;
 }
        private IQuestionBuilder Setup_SunMoonLetter_Builder()
        {
            SimultaneosQuestions = 2;
            Answers = 2;

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory = PackListHistory.RepeatWhenFull;
            builderParams.sortPacksByDifficulty = false;

            return(new LettersBySunMoonQuestionBuilder(
                       SimultaneosQuestions * NumberOfRounds * 2,
                       builderParams
                       ));
        }
        private IQuestionBuilder Setup_WordArticle_Builder()
        {
            SimultaneosQuestions = 2;

            Answers = 2;
            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory       = PackListHistory.RepeatWhenFull;
            builderParams.wordFilters.excludeArticles = false;
            builderParams.sortPacksByDifficulty       = false;

            return(new WordsByArticleQuestionBuilder(
                       Answers * NumberOfRounds * 3,
                       builderParams));
        }
        private IQuestionBuilder Setup_SingularDualPlural_Builder()
        {
            SimultaneosQuestions = 3;
            Answers = 2;

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory         = PackListHistory.RepeatWhenFull;
            builderParams.wordFilters.excludePluralDual = false;
            builderParams.sortPacksByDifficulty         = false;

            return(new WordsByFormQuestionBuilder(
                       SimultaneosQuestions * NumberOfRounds * 4,
                       builderParams));
        }
        public RandomWordsQuestionBuilder(int nPacks, int nCorrect    = 1, int nWrong = 0,
                                          bool firstCorrectIsQuestion = false, Db.WordDataCategory category = Db.WordDataCategory.None, QuestionBuilderParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new QuestionBuilderParameters();
            }

            this.nPacks   = nPacks;
            this.nCorrect = nCorrect;
            this.nWrong   = nWrong;
            this.firstCorrectIsQuestion = firstCorrectIsQuestion;
            this.category   = category;
            this.parameters = parameters;
        }
        public WordsInPhraseQuestionBuilder(int nPacks, int nCorrect             = 1, int nWrong = 0,
                                            bool useAllCorrectWords              = false, bool usePhraseAnswersIfFound = false,
                                            QuestionBuilderParameters parameters = null)
        {
            if (parameters == null)
            {
                parameters = new QuestionBuilderParameters();
            }

            this.nPacks                  = nPacks;
            this.nCorrect                = nCorrect;
            this.nWrong                  = nWrong;
            this.useAllCorrectWords      = useAllCorrectWords;
            this.usePhraseAnswersIfFound = usePhraseAnswersIfFound;
            this.parameters              = parameters;
        }
 public LettersInWordQuestionBuilder(int nPacks, int nCorrect             = 1, int nWrong = 0,
                                     bool useAllCorrectLetters            = false, Db.WordDataCategory category = Db.WordDataCategory.None,
                                     int maximumWordLength                = 20,
                                     QuestionBuilderParameters parameters = null)
 {
     if (parameters == null)
     {
         parameters = new QuestionBuilderParameters();
     }
     this.nPacks               = nPacks;
     this.nCorrect             = nCorrect;
     this.nWrong               = nWrong;
     this.useAllCorrectLetters = useAllCorrectLetters;
     this.category             = category;
     this.maximumWordLength    = maximumWordLength;
     this.parameters           = parameters;
 }
        private IQuestionBuilder Setup_LetterName_Builder()
        {
            SimultaneosQuestions = 1;

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory           = PackListHistory.RepeatWhenFull;
            builderParams.wrongChoicesHistory             = PackListHistory.RepeatWhenFull;
            builderParams.wrongSeverity                   = SelectionSeverity.MayRepeatIfNotEnough;
            builderParams.sortPacksByDifficulty           = false;
            builderParams.letterFilters.excludeDiacritics = LetterFilters.ExcludeDiacritics.All;

            return(new RandomLettersQuestionBuilder(
                       SimultaneosQuestions * NumberOfRounds, // Total Answers
                       1,                                     // CorrectAnswers
                       4,                                     // WrongAnswers
                       firstCorrectIsQuestion: true,
                       parameters: builderParams));
        }
        private IQuestionBuilder Setup_LetterAny_Builder()
        {
            SimultaneosQuestions = 1;

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory = PackListHistory.RepeatWhenFull;
            builderParams.wrongChoicesHistory   = PackListHistory.RepeatWhenFull;
            builderParams.wrongSeverity         = SelectionSeverity.MayRepeatIfNotEnough;
            builderParams.sortPacksByDifficulty = false;

            return(new RandomLetterAlterationsQuestionBuilder(
                       SimultaneosQuestions * NumberOfRounds, // Total Answers
                       1,                                     // CorrectAnswers
                       4,                                     // WrongAnswers
                       letterAlterationFilters: LetterAlterationFilters.FormsAndPhonemesOfMultipleLetters_OneForm,
                       avoidWrongLettersWithSameSound: true,
                       parameters: builderParams));
        }
        private IQuestionBuilder Setup_CompleteWord_Builder()
        {
            SimultaneosQuestions = 1;

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory       = PackListHistory.RepeatWhenFull;
            builderParams.wrongChoicesHistory         = PackListHistory.RepeatWhenFull;
            builderParams.wrongSeverity               = SelectionSeverity.MayRepeatIfNotEnough;
            builderParams.wordFilters.requireDrawings = true;
            builderParams.sortPacksByDifficulty       = false;

            return(new LettersInWordQuestionBuilder(

                       SimultaneosQuestions * NumberOfRounds, // Total Answers
                       nCorrect: 1,                           // Always one!
                       nWrong: 4,                             // WrongAnswers
                       useAllCorrectLetters: false,
                       parameters: builderParams));
        }
        private IQuestionBuilder Setup_SelectPronuncedWord_Builder()
        {
            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory = PackListHistory.RepeatWhenFull;
            builderParams.wrongChoicesHistory   = PackListHistory.RepeatWhenFull;
            builderParams.wrongSeverity         = SelectionSeverity.MayRepeatIfNotEnough;
            builderParams.sortPacksByDifficulty = false;

            SimultaneosQuestions = 1;
            int nCorrect = 1;
            int nWrong   = 3;

            return(new RandomWordsQuestionBuilder(
                       SimultaneosQuestions * NumberOfRounds,
                       nCorrect,
                       nWrong,
                       firstCorrectIsQuestion: true,
                       parameters: builderParams));
        }
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks = 7; // One Extra for tutorial

            nCorrect = 1;
            int nWrong = 4;

            var builderParams = new QuestionBuilderParameters();

            builderParams.wordFilters.excludeColorWords = true;
            builderParams.wordFilters.requireDrawings   = true;

            switch (Variation)
            {
            case ScannerVariation.OneWord:
                nCorrect = 1;
                nWrong   = 4;
                builder  = new RandomWordsQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

            case ScannerVariation.MultipleWords:
                if (Difficulty < 0.5f)
                {
                    nCorrect = 3;
                }
                else
                {
                    nCorrect = 5;
                }
                nWrong  = 0;
                builder = new RandomWordsQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
        private IQuestionBuilder Setup_WordsWithLetter_Builder()
        {
            // This assessment changes behaviour based on the current stage
            var jp = AppManager.I.Player.CurrentJourneyPosition;

            switch (jp.Stage)
            {
            case 1:
                SimultaneosQuestions = 1;
                break;

            case 2:
            case 3:
                SimultaneosQuestions = 2;
                break;

            case 4:
            case 5:
            case 6:
            default:
                SimultaneosQuestions = 3;
                break;
            }
            int nWrong = 6 - SimultaneosQuestions;

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory    = PackListHistory.RepeatWhenFull;
            builderParams.wrongChoicesHistory      = PackListHistory.RepeatWhenFull;
            builderParams.wrongSeverity            = SelectionSeverity.MayRepeatIfNotEnough;
            builderParams.sortPacksByDifficulty    = false;
            builderParams.letterEqualityStrictness = LetterEqualityStrictness.WithVisualForm;

            return(new WordsWithLetterQuestionBuilder(
                       NumberOfRounds,
                       SimultaneosQuestions,
                       1,           // Correct Answers
                       nWrong,      // Wrong Answers
                       parameters: builderParams
                       ));
        }
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case MazeVariation.LetterName:
                builderParams.letterFilters.excludeDiacritics       = LetterFilters.ExcludeDiacritics.All;
                builderParams.wordFilters.excludeDiacritics         = true;
                builderParams.letterFilters.excludeLetterVariations = LetterFilters.ExcludeLetterVariations.AllButAlefHamza;
                builder = new RandomLettersQuestionBuilder(7, 1, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
        private IQuestionBuilder Setup_MatchLettersToWord_Builder()
        {
            // This assessment changes behaviour based on the current stage
            var jp = AppManager.I.Player.CurrentJourneyPosition;

            switch (jp.Stage)
            {
            case 1:
                SimultaneosQuestions = 1;
                break;

            case 2:
            case 3:
                SimultaneosQuestions = 2;
                break;

            case 4:
            case 5:
            case 6:
            default:
                SimultaneosQuestions = 3;
                break;
            }
            int nWrong = 6 - SimultaneosQuestions;

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctChoicesHistory = PackListHistory.RepeatWhenFull;
            builderParams.wrongChoicesHistory   = PackListHistory.RepeatWhenFull;
            builderParams.wrongSeverity         = SelectionSeverity.MayRepeatIfNotEnough;
            builderParams.sortPacksByDifficulty = false;

            return(new LettersInWordQuestionBuilder(
                       NumberOfRounds,
                       SimultaneosQuestions,
                       nCorrect: 1,
                       nWrong: nWrong,
                       useAllCorrectLetters: false,
                       parameters: builderParams));
        }
Exemple #26
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = 6;
            int nCorrect = 3;
            int nWrong   = 8;

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case BalloonsVariation.Spelling:
                builderParams.wordFilters.excludeColorWords = true;
                builderParams.wordFilters.requireDrawings   = true;
                builder = new LettersInWordQuestionBuilder(nPacks, useAllCorrectLetters: true, nWrong: nWrong, parameters: builderParams);
                break;

            case BalloonsVariation.Words:
                builderParams.wordFilters.excludeColorWords = true;
                builderParams.wordFilters.requireDrawings   = true;
                builder = new RandomWordsQuestionBuilder(nPacks, 1, nWrong, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

            case BalloonsVariation.LetterInWord:
                builderParams.wordFilters.excludeDipthongs = true;
                builder = new WordsWithLetterQuestionBuilder(nPacks, nPacksPerRound: 1, nCorrect: nCorrect, nWrong: nWrong, parameters: builderParams);
                break;

            case BalloonsVariation.Counting:
                builder = new OrderedWordsQuestionBuilder(Database.WordDataCategory.Number, null, false);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

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

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case ReadingGameVariation.Alphabet:
            case ReadingGameVariation.DiacriticSong:
                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);
        }
Exemple #28
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 = new QuestionBuilderParameters();

            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, 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, letterAlterationFilters: LetterAlterationFilters.VisualFormsOfSingleLetter);
                break;

            case MissingLetterVariation.Phrase:
                builderParams.phraseFilters.requireWords           = true;
                builderParams.phraseFilters.requireAtLeastTwoWords = true;
                builder = new WordsInPhraseQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(builder);
        }
Exemple #29
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks = 10;
            int nWrong = 4;

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case ThrowBallsVariation.LetterName:
                builderParams.letterFilters.excludeDiacritics = LetterFilters.ExcludeDiacritics.All;
                builder = new RandomLettersQuestionBuilder(nPacks, 1, nWrong: nWrong, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

            case ThrowBallsVariation.LetterAny:
                var letterAlterationFilters = LetterAlterationFilters.FormsAndPhonemesOfMultipleLetters;
                builder = new RandomLetterAlterationsQuestionBuilder(nPacks, 1, nWrong: nWrong, letterAlterationFilters: letterAlterationFilters, parameters: builderParams);
                break;

            case ThrowBallsVariation.Word:
                builderParams.wordFilters.requireDrawings = true;
                builder = new RandomWordsQuestionBuilder(nPacks, 1, nWrong, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

            case ThrowBallsVariation.BuildWord:
                builderParams.wordFilters.excludeDipthongs = true;
                builder = new LettersInWordQuestionBuilder(nPacks, maximumWordLength: 7, nWrong: nWrong, useAllCorrectLetters: true, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Exemple #30
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

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

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case HideAndSeekVariation.LetterPhoneme:
                var letterAlterationFilters = LetterAlterationFilters.FormsAndPhonemesOfMultipleLetters_OneForm;
                builder = new RandomLetterAlterationsQuestionBuilder(nPacks, nCorrect, nWrong: nWrong, letterAlterationFilters: letterAlterationFilters, parameters: builderParams,
                                                                     avoidWrongLettersWithSameSound: true);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }