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); }
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); }
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); }
public List <IQuestionPack> GenerateQuestionPacks(IQuestionBuilder currentConfigurationRules) { List <QuestionPackData> questionPackDataList = currentConfigurationRules.CreateAllQuestionPacks(); List <IQuestionPack> questionPackList = ConvertToQuestionPacks(questionPackDataList); return(questionPackList); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
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); }
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); }
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 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); }
public QuestionCreator(IQuestionBuilder questionBuilder) { _questionBuilder = questionBuilder; }