public void DifficultyCheck(Enum_Difficulty saken) { switch (saken) { case Enum_Difficulty.Easy: GameForm.ActiveForm.Text += " - Easy"; break; case Enum_Difficulty.Medium: GameForm.ActiveForm.Text += " - Medium"; break; case Enum_Difficulty.Hard: GameForm.ActiveForm.Text += " - Hard"; break; case Enum_Difficulty.Hardcore: GameForm.ActiveForm.Text += " - Hardcore"; break; default: GameForm.ActiveForm.Text += " - fel"; break; } }
private void pBox_Hardcore_Click(object sender, EventArgs e) { difficulty = Enum_Difficulty.Hardcore; newForm.Show(); newForm.DifficultyCheck(difficulty); this.Hide(); }
public QuestionAndAnswer GenerateQuestionAndAnswer(Enum_Difficulty difficultyEnum) { // Placeholder object. QuestionAndAnswer tempQuestionAndAnswer = null; // List of valid operators that can be used. List <string> validOperators = new List <string>(); // Determines which operators are specified to use. foreach (KeyValuePair <string, bool> entry in gameSetupData.OperatorsAndSymbols) { if (entry.Value == true) { validOperators.Add(entry.Key); // Adds the 3 letter operator name } } // Variables used to construct QuestionAndAnswer object. string operatorToUse = validOperators[random.Next(0, validOperators.Count)]; string question = null; int answer = 0; List <int> wrongAnswers = new List <int>(); // Sets values based on difficulty. switch (difficultyEnum) { case Enum_Difficulty.EASY: // EASY // single digits // up to 12 x 12 // positive differences ModifyDifficultyFactors(1, 12); break; case Enum_Difficulty.MEDIUM: // MEDIUM // double digits // up to 15 x 15 // positive differences ModifyDifficultyFactors(2, 15); break; case Enum_Difficulty.HARD: // HARD // triple dgits // up to 20 x 20 // negative differences ModifyDifficultyFactors(3, 20); break; default: break; } // Creates equation, answer and data needed for return-object. switch (operatorToUse) { case "div": // maxValue equation: f(x) = 10 ^ x - 1. // f(1) = 10 ^ 1 - 1 = 9 // f(2) = 10 ^ 2 - 1 = 99 int dividend = random.Next(2, gameSetupData.MaxMultiple); int divisor = random.Next(2, gameSetupData.MaxMultiple); int quotient = dividend * divisor; question = "" + quotient + " ÷ " + dividend; answer = divisor; break; case "mul": int mulTerm1 = random.Next(2, gameSetupData.MaxMultiple); int mulTerm2 = random.Next(2, gameSetupData.MaxMultiple); // Places larger number first. if (mulTerm1 < mulTerm2) { int tempMulTerm = mulTerm1; mulTerm1 = mulTerm2; mulTerm2 = tempMulTerm; } int mulProduct = mulTerm1 * mulTerm2; question = "" + mulTerm1 + " x " + mulTerm2; answer = mulProduct; break; case "add": // maxValue equation: f(x) = 10 ^ x - 1. // f(1) = 10 ^ 1 - 1 = 9 // f(2) = 10 ^ 2 - 1 = 99 int addTerm1 = random.Next(1, Convert.ToInt32(Math.Pow(10, gameSetupData.DigitRange[1]) - 1)); //int addTerm2 = random.Next(1, Convert.ToInt32(Math.Pow(10, gameSetupData.DigitRange[1]) - 1)); int addTerm2 = random.Next(1, Convert.ToInt32(Math.Pow(10, gameSetupData.DigitRange[1]) - 1)); // Places larger number first. if (addTerm1 < addTerm2) { int tempAddTerm = addTerm1; addTerm1 = addTerm2; addTerm2 = tempAddTerm; } int addSum = addTerm1 + addTerm2; question = addTerm1 + " + " + addTerm2; answer = addSum; break; case "sub": int subTerm1 = random.Next(1, Convert.ToInt32(Math.Pow(10, gameSetupData.DigitRange[1]) - 1)); int subTerm2 = random.Next(1, Convert.ToInt32(Math.Pow(10, gameSetupData.DigitRange[1]) - 1)); // Places larger number first. if (subTerm1 < subTerm2) { int tempSubTerm = subTerm1; subTerm1 = subTerm2; subTerm2 = tempSubTerm; } int subTerm2Temp = subTerm2; for (int i = random.Next(1, 2); i == 2; i++) { if (subTerm2 > 20) { subTerm2 = random.Next(1, 10); Debug.Log("subTerm2 changed from " + subTerm2Temp + " to " + subTerm2); } } int subDif = subTerm1 - subTerm2; question = subTerm1 + " - " + subTerm2; answer = subDif; break; default: Debug.LogWarning("<color=orange>No operator used!</color>"); break; } // Determines wrong answers. for (int i = 0; wrongAnswers.Count < gameSetupData.NumberOfWrongAnswers; i++) { int offsetAnswer = answer + random.Next(-15, 15); // Ensures divWrongAnswers has unique values only. while (wrongAnswers.Contains(offsetAnswer) || offsetAnswer == 0 || offsetAnswer == answer) { offsetAnswer = answer + random.Next(-15, 15); } wrongAnswers.Add(offsetAnswer); } // Prevents sequential duplicate questions. If there is a duplicate, this statement recursively creates another/more questions. if (questionsAndAnswers.Count >= 1 && questionsAndAnswers[questionsAndAnswers.Count - 1].question.Equals(question)) { Debug.LogWarning("Duplicate question \"" + question + "\" found at index: " + (questionsAndAnswers.Count) + ". Creating a replacement."); tempQuestionAndAnswer = GenerateQuestionAndAnswer(gameSetupData.Difficulty); } else { tempQuestionAndAnswer = new QuestionAndAnswer(question, answer, wrongAnswers); } return(tempQuestionAndAnswer); }