From 6f2f1d778cb0d5ed7c98c0769ab7612ab0c54911 Mon Sep 17 00:00:00 2001 From: Ruksan AC Date: Wed, 28 Jan 2026 15:46:32 +0530 Subject: [PATCH 1/3] Project Finished --- GameEngine.cs | 107 ++++++++++++++++++++++++++++++++++++++++++++++++ Helpers.cs | 53 ++++++++++++++++++++++++ MathGame.csproj | 10 +++++ MathGame.slnx | 3 ++ Menu.cs | 43 +++++++++++++++++++ Program.cs | 10 +++++ 6 files changed, 226 insertions(+) create mode 100644 GameEngine.cs create mode 100644 Helpers.cs create mode 100644 MathGame.csproj create mode 100644 MathGame.slnx create mode 100644 Menu.cs create mode 100644 Program.cs diff --git a/GameEngine.cs b/GameEngine.cs new file mode 100644 index 00000000..4eac0a19 --- /dev/null +++ b/GameEngine.cs @@ -0,0 +1,107 @@ +namespace MathGame +{ + internal class GameEngine + { internal void Addition() + { + Random random = new Random(); + var score = 0; + + for (int i = 0; i < 5; i++) + { + var num1 = random.Next(1, 10); + var num2 = random.Next(1, 10); + Console.WriteLine(num1 + " + " + num2 + " = ?"); + var result = int.Parse(Console.ReadLine()); + if (result == num1 + num2) + { + Console.WriteLine("Correct!"); + score++; + + } + else + { + Console.WriteLine("Incorrect! The correct answer is " + (num1 + num2)); + } + } + Helpers.ShowScore(score); + Helpers.AddScore(score, "Addition"); + + + } + internal void Subtraction() + { + Random random = new Random(); + var score = 0; + + for (int i = 0; i < 5; i++) + { + var num1 = random.Next(1, 10); + var num2 = random.Next(1, 10); + Console.WriteLine(num1 + " - " + num2 + " = ?"); + var result = int.Parse(Console.ReadLine()); + if (result == num1 - num2) + { + Console.WriteLine("Correct!"); + score++; + + } + else + { + Console.WriteLine("Incorrect! The correct answer is " + (num1 - num2)); + } + } + Helpers.ShowScore(score); + Helpers.AddScore(score, "Subtraction"); + } + internal void Multiplication() + { + Random random = new Random(); + var score = 0; + + for (int i = 0; i < 5; i++) + { + var num1 = random.Next(1, 10); + var num2 = random.Next(1, 10); + Console.WriteLine(num1 + " * " + num2 + " = ?"); + var result = int.Parse(Console.ReadLine()); + if (result == num1 * num2) + { + Console.WriteLine("Correct!"); + score++; + + } + else + { + Console.WriteLine("Incorrect! The correct answer is " + (num1 * num2)); + } + } + Helpers.ShowScore(score); + Helpers.AddScore(score, "Multiplication"); + } + + internal void Division() + { + var score = 0; + + + for (int i = 0; i < 5; i++) + { + int[] nums = Helpers.getNumbers(); + Console.WriteLine(nums[0] + " / " + nums[1] + " = ?"); + var result = int.Parse(Console.ReadLine()); + if (result == nums[0] / nums[1]) + { + Console.WriteLine("Correct!"); + score++; + + } + else + { + Console.WriteLine("Incorrect! The correct answer is " + (nums[0] / nums[1])); + } + } + Helpers.ShowScore(score); + Helpers.AddScore(score, "Division"); + } + } +} diff --git a/Helpers.cs b/Helpers.cs new file mode 100644 index 00000000..9975fb01 --- /dev/null +++ b/Helpers.cs @@ -0,0 +1,53 @@ + +namespace MathGame +{ + internal class Helpers + { + static List scores = new(); + internal static void ShowScore(int score) + { + Console.WriteLine("Your total score is: " + score + " out of 5"); + } + internal static void ViewScores() + { + Console.WriteLine("\n--- Previous Scores ---"); + + if (scores.Count == 0) + { + Console.WriteLine("No games played yet!"); + } + else + { + for (int i = 0; i < scores.Count; i++) + { + Console.WriteLine($"{i + 1}. {scores[i]}"); + } + } + + Console.WriteLine("-----------------------"); + } + internal static int[] getNumbers() + { + Random random = new Random(); + int num1 = random.Next(0, 99); + int num2 = random.Next(0, 99); + var result = new int[2]; + + while (num1 % num2 != 0) + { + num1 = random.Next(0, 99); ; + num2 = random.Next(0, 99); + } + result[0] = num1; + result[1] = num2; + + return result; + } + + internal static void AddScore(int score, string game) + { + scores.Add($"{game} - {score}/5 - {DateTime.Now:g}"); + } + + } +} diff --git a/MathGame.csproj b/MathGame.csproj new file mode 100644 index 00000000..ed9781c2 --- /dev/null +++ b/MathGame.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/MathGame.slnx b/MathGame.slnx new file mode 100644 index 00000000..b337a196 --- /dev/null +++ b/MathGame.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Menu.cs b/Menu.cs new file mode 100644 index 00000000..14e09b37 --- /dev/null +++ b/Menu.cs @@ -0,0 +1,43 @@ +namespace MathGame +{ + internal class Menu + { + internal void ShowMenu(string name) + { + Console.WriteLine("\nHello " + name + "! Welcome to the Math Quiz!"); + bool exit = true; + GameEngine gameEngine = new GameEngine(); + while (exit) + { + + Console.WriteLine("Choose the operation you want to practice: "); + Console.WriteLine("1. Addition"); + Console.WriteLine("2. Subtraction"); + Console.WriteLine("3. Multiplication"); + Console.WriteLine("4. Division"); + Console.WriteLine("5. View Scores"); + Console.WriteLine("6. Exit"); + if (int.TryParse(Console.ReadLine(), out int choice)) + { + switch (choice) + { + case 1: gameEngine.Addition(); break; + case 2: gameEngine.Subtraction(); break; + case 3: gameEngine.Multiplication(); break; + case 4: gameEngine.Division(); break; + case 5: Helpers.ViewScores(); break; + case 6: + Console.WriteLine("Goodbye!"); + exit = false; + break; + default: Console.WriteLine("Invalid choice!"); break; + } + } + else + { + Console.WriteLine("Invalid input!"); + } + } + } + } +} diff --git a/Program.cs b/Program.cs new file mode 100644 index 00000000..546e79f8 --- /dev/null +++ b/Program.cs @@ -0,0 +1,10 @@ +using MathGame; + +Console.WriteLine("Enter your Name: "); +string name = Console.ReadLine(); +Menu menu = new Menu(); +menu.ShowMenu(name); + + + + From 5915f96e7a69a83589f7e9de00e9e595a973bc8a Mon Sep 17 00:00:00 2001 From: Ruksan AC Date: Wed, 28 Jan 2026 17:01:56 +0530 Subject: [PATCH 2/3] Errors fixed --- GameEngine.cs | 2 +- Helpers.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/GameEngine.cs b/GameEngine.cs index 4eac0a19..1227a40d 100644 --- a/GameEngine.cs +++ b/GameEngine.cs @@ -86,7 +86,7 @@ internal void Division() for (int i = 0; i < 5; i++) { - int[] nums = Helpers.getNumbers(); + int[] nums = Helpers.GetNumbers(); Console.WriteLine(nums[0] + " / " + nums[1] + " = ?"); var result = int.Parse(Console.ReadLine()); if (result == nums[0] / nums[1]) diff --git a/Helpers.cs b/Helpers.cs index 9975fb01..75986d8d 100644 --- a/Helpers.cs +++ b/Helpers.cs @@ -26,7 +26,7 @@ internal static void ViewScores() Console.WriteLine("-----------------------"); } - internal static int[] getNumbers() + internal static int[] GetNumbers() { Random random = new Random(); int num1 = random.Next(0, 99); @@ -35,7 +35,7 @@ internal static int[] getNumbers() while (num1 % num2 != 0) { - num1 = random.Next(0, 99); ; + num1 = random.Next(0, 99); num2 = random.Next(0, 99); } result[0] = num1; From 0626db6d84a0a21d50724bf3e9976425f8fae833 Mon Sep 17 00:00:00 2001 From: Ruksan AC Date: Thu, 5 Feb 2026 14:05:55 +0530 Subject: [PATCH 3/3] Bug Fixes and Input validation --- GameEngine.cs | 78 ++++++++++++++++++++++++++++++++------------------- Helpers.cs | 8 +++--- 2 files changed, 53 insertions(+), 33 deletions(-) diff --git a/GameEngine.cs b/GameEngine.cs index 1227a40d..5ac2502e 100644 --- a/GameEngine.cs +++ b/GameEngine.cs @@ -1,7 +1,7 @@ namespace MathGame { internal class GameEngine - { internal void Addition() + { internal void Addition() { Random random = new Random(); var score = 0; @@ -11,17 +11,22 @@ internal class GameEngine var num1 = random.Next(1, 10); var num2 = random.Next(1, 10); Console.WriteLine(num1 + " + " + num2 + " = ?"); - var result = int.Parse(Console.ReadLine()); - if (result == num1 + num2) - { - Console.WriteLine("Correct!"); - score++; - - } - else + int result; + while (!int.TryParse(Console.ReadLine(), out result)) { - Console.WriteLine("Incorrect! The correct answer is " + (num1 + num2)); + Console.WriteLine("Invalid input. Please enter a number."); + Console.WriteLine(num1 + " + " + num2 + " = ?"); } + if (result == num1 + num2) + { + Console.WriteLine("Correct!"); + score++; + + } + else + { + Console.WriteLine("Incorrect! The correct answer is " + (num1 + num2)); + } } Helpers.ShowScore(score); Helpers.AddScore(score, "Addition"); @@ -38,17 +43,22 @@ internal void Subtraction() var num1 = random.Next(1, 10); var num2 = random.Next(1, 10); Console.WriteLine(num1 + " - " + num2 + " = ?"); - var result = int.Parse(Console.ReadLine()); - if (result == num1 - num2) + int result; + while (!int.TryParse(Console.ReadLine(), out result)) { - Console.WriteLine("Correct!"); - score++; - - } - else - { - Console.WriteLine("Incorrect! The correct answer is " + (num1 - num2)); + Console.WriteLine("Invalid input. Please enter a number."); + Console.WriteLine(num1 + " - " + num2 + " = ?"); } + if (result == num1 - num2) + { + Console.WriteLine("Correct!"); + score++; + + } + else + { + Console.WriteLine("Incorrect! The correct answer is " + (num1 - num2)); + } } Helpers.ShowScore(score); Helpers.AddScore(score, "Subtraction"); @@ -63,7 +73,12 @@ internal void Multiplication() var num1 = random.Next(1, 10); var num2 = random.Next(1, 10); Console.WriteLine(num1 + " * " + num2 + " = ?"); - var result = int.Parse(Console.ReadLine()); + int result; + while (!int.TryParse(Console.ReadLine(), out result)) + { + Console.WriteLine("Invalid input. Please enter a number."); + Console.WriteLine(num1 + " * " + num2 + " = ?"); + } if (result == num1 * num2) { Console.WriteLine("Correct!"); @@ -88,17 +103,22 @@ internal void Division() { int[] nums = Helpers.GetNumbers(); Console.WriteLine(nums[0] + " / " + nums[1] + " = ?"); - var result = int.Parse(Console.ReadLine()); - if (result == nums[0] / nums[1]) + int result; + while (!int.TryParse(Console.ReadLine(), out result)) { - Console.WriteLine("Correct!"); - score++; - - } - else - { - Console.WriteLine("Incorrect! The correct answer is " + (nums[0] / nums[1])); + Console.WriteLine("Invalid input. Please enter a number."); + Console.WriteLine(nums[0] + " / " + nums[1] + " = ?"); } + if (result == nums[0] / nums[1]) + { + Console.WriteLine("Correct!"); + score++; + + } + else + { + Console.WriteLine("Incorrect! The correct answer is " + (nums[0] / nums[1])); + } } Helpers.ShowScore(score); Helpers.AddScore(score, "Division"); diff --git a/Helpers.cs b/Helpers.cs index 75986d8d..f7f506e4 100644 --- a/Helpers.cs +++ b/Helpers.cs @@ -29,14 +29,14 @@ internal static void ViewScores() internal static int[] GetNumbers() { Random random = new Random(); - int num1 = random.Next(0, 99); - int num2 = random.Next(0, 99); + int num1 = random.Next(1, 99); + int num2 = random.Next(1, 99); var result = new int[2]; while (num1 % num2 != 0) { - num1 = random.Next(0, 99); - num2 = random.Next(0, 99); + num1 = random.Next(1, 99); + num2 = random.Next(1, 99); } result[0] = num1; result[1] = num2;