Example #1
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

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

            var builderParams = InitQuestionBuilderParamaters();

            switch (Variation)
            {
            case ToboganVariation.LetterInWord:
                builderParams.wordFilters.excludeLetterVariations = true;
                builderParams.wordFilters.excludeDipthongs        = true;
                builder = new LettersInWordQuestionBuilder(nPacks, nCorrect: nCorrect, nWrong: nWrong, parameters: builderParams);
                break;

            case ToboganVariation.SunMoon:
                builder = new WordsBySunMoonQuestionBuilder(nPacks, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Example #2
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = 20;
            int nCorrect = 1;
            int nWrong   = 0;

            var builderParams = InitQuestionBuilderParamaters();

            switch (Variation)
            {
            case SickLettersVariation.LetterName:
                builderParams.letterFilters.excludeDiacritics       = LetterFilters.ExcludeDiacritics.All;
                builderParams.letterFilters.excludeLetterVariations = LetterFilters.ExcludeLetterVariations.All;
                builderParams.letterFilters.excludeDiphthongs       = true;
                builder = new RandomLettersQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Example #3
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

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

            var builderParams = InitQuestionBuilderParamaters();

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

            case HideAndSeekVariation.LetterName:
                builder = new RandomLettersQuestionBuilder(nPacks, nCorrect, nWrong: nWrong, parameters: builderParams);
                break;

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

            default:
                throw new ArgumentOutOfRangeException();
            }

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

            // TODO
            return(builder);
        }
Example #5
0
        public List <IQuestionPack> GenerateQuestionPacks(IQuestionBuilder currentConfigurationRules)
        {
            List <QuestionPackData> questionPackDataList = currentConfigurationRules.CreateAllQuestionPacks();
            List <IQuestionPack>    questionPackList     = ConvertToQuestionPacks(questionPackDataList);

            return(questionPackList);
        }
Example #6
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = 10;
            int nCorrect = 1;

            var builderParams = new QuestionBuilderParameters();

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

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Example #7
0
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

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

            var builderParams = new Teacher.QuestionBuilderParameters();

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

            case ToboganVariation.SunMoon:
                builder = new WordsBySunMoonQuestionBuilder(nPacks, parameters: builderParams);
                break;
            }

            if (builder == null)
            {
                throw new System.Exception("No question builder defined for variation " + Variation.ToString());
            }

            return(builder);
        }
Example #8
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

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

            // Debug.LogWarning("SetupBuilder " + Variation.ToString());

            var builderParams = new QuestionBuilderParameters();

            builderParams.correctSeverity = SelectionSeverity.AsManyAsPossible;

            switch (Variation)
            {
            case EggVariation.LetterName:
                builder = new RandomLettersQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

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

            case EggVariation.LetterPhoneme:
                builder = new RandomLetterAlterationsQuestionBuilder(nPacks, 1, 3, parameters: builderParams, letterAlterationFilters: LetterAlterationFilters.FormsAndPhonemesOfMultipleLetters_OneForm, avoidWrongLettersWithSameSound: true);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

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

            int nPacks   = TutorialEnabled ? 7 : 6; // extra one for the tutorial
            int nCorrect = 1;
            int nWrong   = 0;

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case DancingDotsVariation.LetterName:
                throw new NotImplementedException("This variation has been removed!");

            case DancingDotsVariation.LetterAny:
                // This variation selects the main diacritics only
                builderParams.letterFilters.excludeDiacritics       = LetterFilters.ExcludeDiacritics.AllButMain;
                builderParams.letterFilters.excludeLetterVariations = LetterFilters.ExcludeLetterVariations.All;
                builderParams.letterFilters.requireDiacritics       = true;
                builder = new RandomLettersQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);
                break;

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

            int nPacks = 10;
            int nWrong = 5;
            int nWords = 2;
            var letterEqualityStrictness = LetterEqualityStrictness.WithVisualForm;

            var builderParams = InitQuestionBuilderParamaters();

            switch (Variation)
            {
            case MakeFriendsVariation.LetterInWord:
                builderParams.letterFilters.excludeDiphthongs = true;
                builderParams.wordFilters.excludeDipthongs    = true;
                builderParams.wordFilters.excludeArticles     = true;
                builder = new CommonLetterInWordQuestionBuilder(nPacks, nWrong, nWords, parameters: builderParams, letterEqualityStrictness: letterEqualityStrictness);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
        /// <summary>
        /// Prepare all context needed and starts the game.
        /// </summary>
        /// <param name="_gameCode">The game code.</param>
        /// <param name="_gameConfiguration">The game configuration.</param>
        public void StartGame(MiniGameCode _gameCode, GameConfiguration _gameConfiguration)
        {
            if (AppConstants.VerboseLogging)
            {
                Debug.Log("StartGame " + _gameCode.ToString());
            }

            MiniGameData       miniGameData      = AppManager.I.DB.GetMiniGameDataByCode(_gameCode);
            IQuestionBuilder   rules             = null;
            IGameConfiguration currentGameConfig = null;

            currentGameConfig = GetGameConfigurationForMiniGameCode(_gameCode);

            // game difficulty
            currentGameConfig.Difficulty = _gameConfiguration.Difficulty;
            // rule setted in config and used by AI to create correct game data
            rules = currentGameConfig.SetupBuilder();
            // question packs (game data)
            currentGameConfig.Questions = new FindRightLetterQuestionProvider(AppManager.I.GameLauncher.RetrieveQuestionPacks(rules), miniGameData.Description);

            // Save current game code to appmanager currentminigame
            AppManager.I.CurrentMinigame = miniGameData;
            // Comunicate to LogManager that start new single minigame play session.
            currentGameConfig.Context.GetLogManager().InitGameplayLogSession(_gameCode);

            // Call game start
            //NavigationManager.I.GoToNextScene();
            NavigationManager.I.GoToScene(miniGameData.Scene);
        }
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks = 10;
            int nWrong = 4;

            var builderParams = new Teacher.QuestionBuilderParameters();

            switch (Variation)
            {
            case ThrowBallsVariation.letters:
                builder = new RandomLettersQuestionBuilder(nPacks, 1, nWrong: nWrong, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

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

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

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

            int nPacks = 10;

            var builderParams = new QuestionBuilderParameters();

            switch (Variation)
            {
            case MixedLettersVariation.Alphabet:
                builderParams.useJourneyForCorrect = false;     // Force no journey, or the minigame will block
                builder = new AlphabetQuestionBuilder(parameters: builderParams);
                break;

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

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Example #14
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);
        }
Example #15
0
        public List <IQuestionPack> GenerateQuestionPacks(IQuestionBuilder questionBuilder)
        {
            // Safety fallback, used for release to avoid crashing the application.
            // @note: This WILL block the game if an error happens EVERYTIME, so make sure that never happens!
            List <QuestionPackData> questionPackDataList = null;
            int safetyCounter = 10;

            while (true)
            {
                try
                {
                    // Generate packs
                    questionPackDataList = questionBuilder.CreateAllQuestionPacks();
                    break;
                }
                catch (System.Exception e)
                {
                    if (!ConfigAI.TeacherSafetyFallbackEnabled)
                    {
                        throw e;
                    }
                    else
                    {
                        safetyCounter--;
                        UnityEngine.Debug.LogError("Teacher fallback triggered (" + safetyCounter + "): " + e.ToString());
                        ConfigAI.PrintTeacherReport(logOnly: true);

                        if (safetyCounter <= 0)
                        {
                            break;
                        }
                    }
                }
            }

            // Apply ordering
            if (questionBuilder.Parameters != null && questionBuilder.Parameters.sortPacksByDifficulty)
            {
                QuestionBuilderHelper.SortPacksByDifficulty(questionPackDataList);
            }

            // Fix blatant repetitions
            if (questionPackDataList.Count > 2)
            {
                FixRepetitions(questionPackDataList);
            }

            ConfigAI.ReportPacks(questionPackDataList);

            var questionPackList = ConvertQuestionPackDataToQuestionPack(questionPackDataList);

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

            var builderParams = new Teacher.QuestionBuilderParameters();

            builderParams.letterFilters.excludeDiacritics = true;
            builderParams.wordFilters.excludeDiacritics   = true;
            builder = new RandomLettersQuestionBuilder(7, 1, parameters: builderParams);

            return(builder);
        }
Example #17
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);
        }
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = 10;
            int nCorrect = 5;

            var builderParams = new Teacher.QuestionBuilderParameters();

            builder = new RandomLettersQuestionBuilder(nPacks, nCorrect, parameters: builderParams);

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

            int nPacks   = 10;
            int nCorrect = 1;

            var builderParams = new Teacher.QuestionBuilderParameters();

            builderParams.letterFilters.excludeDiacritics = true;
            builderParams.wordFilters.excludeDiacritics   = true;
            builder = new RandomLettersQuestionBuilder(nPacks, nCorrect, parameters: builderParams);

            return(builder);
        }
Example #20
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            // CONFIGURE HERE WHAT BUILDER THE MINIGAME IS EXPECTING BASED ON ITS VARIATION
            switch (Variation)
            {
            case TemplateVariation.Example:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Example #21
0
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks            = 10;
            int nMinCommonLetters = 1;
            int nMaxCommonLetters = 1;
            int nWrong            = 5;
            int nWords            = 2;

            var builderParams = new Teacher.QuestionBuilderParameters();

            builder = new CommonLettersInWordQuestionBuilder(nPacks, nMinCommonLetters, nMaxCommonLetters, nWrong, nWords, parameters: builderParams);

            return(builder);
        }
Example #22
0
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            SetupVariables();

            int nPacks = 7;             // One Extra for tutorial

            nCorrect = 1;
            int nWrong = 4;

            var builderParams = new Teacher.QuestionBuilderParameters();

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

            switch (Variation)
            {
            case ScannerVariation.OneWord:
                nCorrect = 1;
                nWrong   = 4;
                break;

            case ScannerVariation.MultipleWords:
                if (Difficulty < 0.5f)
                {
                    nCorrect = 3;
                }
                else
                {
                    nCorrect = 5;
                }
                nWrong = 0;
                break;
            }

            builder = new RandomWordsQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);


            if (builder == null)
            {
                throw new System.Exception("No question builder defined for variation " + Variation.ToString());
            }


            return(builder);
        }
Example #23
0
        /// <summary>
        /// Prepare the context and start a minigame.
        /// </summary>
        /// <param name="gameCode">The minigame code.</param>
        /// <param name="launchConfig">The launch configuration. If null, the Teacher will generate a new one.</param>
        public void LaunchGame(MiniGameCode gameCode, MinigameLaunchConfiguration launchConfig)
        {
            LastLaunchConfig = launchConfig;

            ConfigAI.StartTeacherReport();

            var miniGameData = AppManager.I.DB.GetMiniGameDataByCode(gameCode);

            if (launchConfig.DirectGame)
            {
                AppManager.I.NavigationManager.InitNewPlaySession(true, miniGameData);
            }

            if (ApplicationConfig.I.DebugLogEnabled)
            {
                Debug.Log("StartGame " + gameCode.ToString());
                Debug.Log(launchConfig);
            }

            // Assign the configuration for the given minigame
            var minigameSession = DateTime.Now.Ticks.ToString();

            currentGameConfig = ConfigureMiniGameScene(gameCode, minigameSession, launchConfig);

            // Retrieve the packs for the current minigame configuration
            currentQuestionBuilder      = currentGameConfig.SetupBuilder();
            currentQuestionPacks        = questionPacksGenerator.GenerateQuestionPacks(currentQuestionBuilder);
            currentGameConfig.Questions = new SequentialQuestionPackProvider(currentQuestionPacks);

            // Communicate to LogManager the start of a new single minigame play session.
            if (AppConfig.DebugLogDbInserts)
            {
                Debug.Log("InitGameplayLogSession " + gameCode.ToString());
            }
            LogManager.I.LogInfo(InfoEvent.GameStart, "{\"minigame\":\"" + gameCode.ToString() + "\"}");
            LogManager.I.StartMiniGame();

            // Print the teacher's report now
            ConfigAI.PrintTeacherReport();

            // Play the title dialog for the game
            //AudioManager.I.PlayDialogue(_gameCode.ToString()+"_Title");

            // Launch the game
            AppManager.I.NavigationManager.GoToMiniGameScene();
        }
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks   = 7; // extra one for the tutorial
            int nCorrect = 1;
            int nWrong   = 0;

            var builderParams = new Teacher.QuestionBuilderParameters();

            builderParams.letterFilters.excludeDiacritics_keepMain = true;
            builderParams.letterFilters.excludeLetterVariations    = false;
            builderParams.wordFilters.excludeDiacritics            = false;
            builderParams.wordFilters.excludeLetterVariations      = false;
            builder = new RandomLettersQuestionBuilder(nPacks, nCorrect, nWrong, parameters: builderParams);

            return(builder);
        }
Example #25
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);
        }
        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);
        }
        public IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks = 10;

            var builderParams = new Teacher.QuestionBuilderParameters();

            switch (Variation)
            {
            case MixedLettersVariation.Alphabet:
                builder = new AlphabetQuestionBuilder(parameters: builderParams);
                break;

            case MixedLettersVariation.Spelling:
                builder = new LettersInWordQuestionBuilder(nPacks, maximumWordLength: 6, useAllCorrectLetters: true, parameters: builderParams);
                break;
            }

            return(builder);
        }
Example #28
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            var builderParams = InitQuestionBuilderParamaters();

            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);
        }
Example #29
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);
        }
Example #30
0
        public override IQuestionBuilder SetupBuilder()
        {
            IQuestionBuilder builder = null;

            int nPacks = 10;
            int nWrong = 4;

            var builderParams = InitQuestionBuilderParamaters();

            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:
            case ThrowBallsVariation.Image:
                builderParams.wordFilters.requireDrawings = true;
                builder = new RandomWordsQuestionBuilder(nPacks, 1, nWrong, firstCorrectIsQuestion: true, parameters: builderParams);
                break;

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

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(builder);
        }
Example #31
0
 public QuestionCreator(IQuestionBuilder questionBuilder)
 {
     _questionBuilder = questionBuilder;
 }