diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic.slnx b/MathGame.DzemalKurtic/MathGame.DzemalKurtic.slnx
new file mode 100644
index 00000000..1fdf2b7a
--- /dev/null
+++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic.slnx
@@ -0,0 +1,3 @@
+
+
+
diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs
new file mode 100644
index 00000000..0011f204
--- /dev/null
+++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs
@@ -0,0 +1,173 @@
+using MathGame.DzemalKurtic.Models;
+
+namespace MathGame.DzemalKurtic
+{
+ internal class GameEngine
+ {
+ internal void DivisionGame(string message)
+ {
+ var score = 0;
+
+ for (int i = 0; i < 5; i++)
+ {
+ Console.Clear();
+ Console.WriteLine(message);
+
+ var divisionNumbers = Helpers.GetDivisionNumbers();
+ var firstNumber = divisionNumbers[0];
+ var secondNumber = divisionNumbers[1];
+
+ Console.WriteLine($"{firstNumber} / {secondNumber}");
+ var result = Console.ReadLine();
+ result = Helpers.ValidateResult(result);
+
+ if (int.Parse(result) == firstNumber / secondNumber)
+ {
+ Console.WriteLine("You answer was correct! Type any key for the next question");
+ Console.ReadLine();
+ score++;
+ }
+ else
+ {
+ Console.WriteLine("Your anwser was incorrect! Type any key for the next question");
+ Console.ReadLine();
+ }
+
+ if (i == 4)
+ {
+ Console.WriteLine($"Game over. Your final score is {score}. Press any key to go back to the menu.");
+ Console.ReadLine();
+ }
+ }
+ Helpers.AddToHistory(score, GameType.Division);
+ }
+
+ internal void MultiplicationGame(string message)
+ {
+ Console.WriteLine(message);
+
+ var random = new Random();
+ var score = 0;
+ int firstNumber;
+ int secondNumber;
+
+ for (int i = 0; i < 5; i++)
+ {
+ Console.Clear();
+ Console.WriteLine(message);
+
+ firstNumber = random.Next(1, 9);
+ secondNumber = random.Next(1, 9);
+ Console.WriteLine($"{firstNumber} * {secondNumber}");
+
+ var result = Console.ReadLine();
+ result = Helpers.ValidateResult(result);
+
+ if (int.Parse(result) == firstNumber * secondNumber)
+ {
+ Console.WriteLine("You answer was correct! Type any key for the next question");
+ Console.ReadLine();
+ score++;
+ }
+ else
+ {
+ Console.WriteLine("Your anwser was incorrect! Type any key for the next question");
+ Console.ReadLine();
+ }
+
+ if (i == 4)
+ {
+ Console.WriteLine($"Game over. Your final score is {score}. Press any key to go back to the menu.");
+ Console.ReadLine();
+ }
+ }
+ Helpers.AddToHistory(score, GameType.Multiplication);
+ }
+
+ internal void SubtractionGame(string message)
+ {
+ Console.WriteLine(message);
+
+ var random = new Random();
+ var score = 0;
+ int firstNumber;
+ int secondNumber;
+
+ for (int i = 0; i < 5; i++)
+ {
+ Console.Clear();
+ Console.WriteLine(message);
+
+ firstNumber = random.Next(1, 9);
+ secondNumber = random.Next(1, 9);
+ Console.WriteLine($"{firstNumber} - {secondNumber}");
+
+ var result = Console.ReadLine();
+ result = Helpers.ValidateResult(result);
+
+ if (int.Parse(result) == firstNumber - secondNumber)
+ {
+ Console.WriteLine("You answer was correct! Type any key for the next question");
+ Console.ReadLine();
+ score++;
+ }
+ else
+ {
+ Console.WriteLine("Your anwser was incorrect! Type any key for the next question");
+ Console.ReadLine();
+ }
+
+ if (i == 4)
+ {
+ Console.WriteLine($"Game over. Your final score is {score}. Press any key to go back to the menu.");
+ Console.ReadLine();
+ }
+ }
+
+ Helpers.AddToHistory(score, GameType.Subtraction);
+ }
+
+ internal void AdditionGame(string message)
+ {
+ Console.WriteLine(message);
+
+ var random = new Random();
+ var score = 0;
+ int firstNumber;
+ int secondNumber;
+
+ for (int i = 0; i < 5; i++)
+ {
+ Console.Clear();
+ Console.WriteLine(message);
+
+ firstNumber = random.Next(1, 9);
+ secondNumber = random.Next(1, 9);
+ Console.WriteLine($"{firstNumber} + {secondNumber}");
+
+ var result = Console.ReadLine();
+ result = Helpers.ValidateResult(result);
+
+ if (int.Parse(result) == firstNumber + secondNumber)
+ {
+ Console.WriteLine("You answer was correct! Type any key for the next question");
+ Console.ReadLine();
+ score++;
+ }
+ else
+ {
+ Console.WriteLine("Your anwser was incorrect! Type any key for the next question");
+ Console.ReadLine();
+ }
+
+ if (i == 4)
+ {
+ Console.WriteLine($"Game over. Your final score is {score}. Press any key to go back to the menu.");
+ Console.ReadLine();
+ }
+ }
+
+ Helpers.AddToHistory(score, GameType.Addition);
+ }
+ }
+}
diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs
new file mode 100644
index 00000000..7052a06d
--- /dev/null
+++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs
@@ -0,0 +1,77 @@
+using MathGame.DzemalKurtic.Models;
+
+namespace MathGame.DzemalKurtic
+{
+ internal class Helpers
+ {
+ internal static List games = new List();
+ internal static void PrintGames()
+ {
+ Console.Clear();
+ Console.WriteLine("Game History");
+ Console.WriteLine("----------------");
+ foreach (var game in games)
+ {
+ Console.WriteLine($"{game.Date} - {game.Type}: {game.Score}pts");
+ }
+ Console.WriteLine("----------------");
+ Console.WriteLine("Press any key to go back to main menu.");
+ Console.ReadLine();
+ }
+
+ internal static void AddToHistory(int gameScore, GameType gameType)
+ {
+ games.Add(new Game
+ {
+ Date = DateTime.Now,
+ Score = gameScore,
+ Type = gameType
+ });
+ }
+
+ internal static int[] GetDivisionNumbers()
+ {
+ var random = new Random();
+ var firstNumber = random.Next(0, 99);
+ var secondNumber = random.Next(0, 99);
+
+ var result = new int[2];
+
+ while (firstNumber % secondNumber != 0)
+ {
+ firstNumber = random.Next(1, 99);
+ secondNumber = random.Next(1, 99);
+ }
+
+ result[0] = firstNumber;
+ result[1] = secondNumber;
+
+ return result;
+ }
+
+ internal static string GetName()
+ {
+ Console.WriteLine("Please type your name");
+ var name = Console.ReadLine();
+
+ while (string.IsNullOrEmpty(name))
+ {
+ Console.WriteLine("Name can't be empty");
+ name = Console.ReadLine();
+ }
+
+ return name;
+ }
+
+ internal static string ValidateResult(string? result)
+ {
+ while (string.IsNullOrEmpty(result) || !Int32.TryParse(result, out _))
+ {
+ Console.WriteLine("Your answer needs to be an integer. Try again.");
+ result = Console.ReadLine();
+ }
+
+ return result;
+ }
+ }
+}
diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/MathGame.DzemalKurtic.csproj b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/MathGame.DzemalKurtic.csproj
new file mode 100644
index 00000000..ed9781c2
--- /dev/null
+++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/MathGame.DzemalKurtic.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net10.0
+ enable
+ enable
+
+
+
diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs
new file mode 100644
index 00000000..c2e40ceb
--- /dev/null
+++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs
@@ -0,0 +1,60 @@
+namespace MathGame.DzemalKurtic
+{
+ internal class Menu
+ {
+ GameEngine gameEngine = new();
+ internal void ShowMenu(string? name, DateTime date)
+ {
+ Console.Clear();
+ Console.WriteLine($"Hello {name}. It's {date}. This is your math's game. That's great that you're working on improving yourself");
+ Console.WriteLine("Press any key to show menu");
+ Console.ReadLine();
+ Console.WriteLine("\n");
+
+ bool isGameOn = true;
+
+ do
+ {
+ Console.Clear();
+ Console.WriteLine($@"What game would you like to play? Choose from options below:
+ V - View Previous Games
+ A - Addition
+ S - Subtraction
+ M - Multiplication
+ D - Division
+ Q - Quit the program");
+
+ Console.WriteLine();
+
+ var gameSelected = Console.ReadLine()?.Trim().ToLower();
+
+ switch (gameSelected)
+ {
+ case "v":
+ Helpers.PrintGames();
+ break;
+ case "a":
+ gameEngine.AdditionGame("Addition game");
+ break;
+ case "s":
+ gameEngine.SubtractionGame("Subtraction game");
+ break;
+ case "m":
+ gameEngine.MultiplicationGame("Multiplication game");
+ break;
+ case "d":
+ gameEngine.DivisionGame("Division game");
+ break;
+ case "q":
+ Console.WriteLine("Goodbye");
+ isGameOn = false;
+ break;
+ default:
+ Console.WriteLine("Invalid input");
+ break;
+ }
+ } while (isGameOn);
+ }
+
+ }
+}
diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Models/Game.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Models/Game.cs
new file mode 100644
index 00000000..a0811b8b
--- /dev/null
+++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Models/Game.cs
@@ -0,0 +1,19 @@
+namespace MathGame.DzemalKurtic.Models
+{
+ internal class Game
+ {
+ internal DateTime Date { get; set; }
+
+ internal int Score { get; set; }
+
+ internal GameType Type { get; set; }
+ }
+
+ internal enum GameType
+ {
+ Addition,
+ Subtraction,
+ Multiplication,
+ Division
+ }
+}
diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs
new file mode 100644
index 00000000..22e2abd0
--- /dev/null
+++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs
@@ -0,0 +1,16 @@
+namespace MathGame.DzemalKurtic
+{
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ var menu = new Menu();
+
+ string? name = Helpers.GetName();
+
+ var date = DateTime.UtcNow;
+
+ menu.ShowMenu(name, date);
+ }
+ }
+}
\ No newline at end of file