Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions GameEngine.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
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 + " = ?");
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!");
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 + " = ?");
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!");
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 + " = ?");
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!");
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] + " = ?");
int result;
while (!int.TryParse(Console.ReadLine(), out result))
{
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");
}
}
}
53 changes: 53 additions & 0 deletions Helpers.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@

namespace MathGame
{
internal class Helpers
{
static List<string> 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(1, 99);
int num2 = random.Next(1, 99);
var result = new int[2];

while (num1 % num2 != 0)
{
num1 = random.Next(1, 99);
num2 = random.Next(1, 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}");
}

}
}
10 changes: 10 additions & 0 deletions MathGame.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

</Project>
3 changes: 3 additions & 0 deletions MathGame.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<Solution>
<Project Path="MathGame.csproj" />
</Solution>
43 changes: 43 additions & 0 deletions Menu.cs
Original file line number Diff line number Diff line change
@@ -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!");
}
}
}
}
}
10 changes: 10 additions & 0 deletions Program.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using MathGame;

Console.WriteLine("Enter your Name: ");
string name = Console.ReadLine();
Menu menu = new Menu();
menu.ShowMenu(name);