From 3177cf31814361e45e4aceaa8a114924f80f6302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kurti=C4=87=20D=C5=BEemal?= Date: Thu, 27 Aug 2026 20:02:31 +0200 Subject: [PATCH 1/4] Add sterted files --- .../MathGame.DzemalKurtic.slnx | 3 + .../MathGame.DzemalKurtic.csproj | 10 +++ .../MathGame.DzemalKurtic/Program.cs | 69 +++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 MathGame.DzemalKurtic/MathGame.DzemalKurtic.slnx create mode 100644 MathGame.DzemalKurtic/MathGame.DzemalKurtic/MathGame.DzemalKurtic.csproj create mode 100644 MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs 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/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/Program.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs new file mode 100644 index 00000000..14cf8e95 --- /dev/null +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs @@ -0,0 +1,69 @@ +namespace MathGame.DzemalKurtic +{ + internal class Program + { + static void Main(string[] args) + { + Console.WriteLine("Please type your name"); + var name = Console.ReadLine(); + Console.WriteLine($"Hello {name} this is your Math game"); + + Console.WriteLine($@"What game would you like to play? Choose from options below: + A - Addition + S - Subtraction + M - Multiplication + D - Division + Q - Quit the program"); + + Console.WriteLine(); + + var gameSelected = Console.ReadLine()?.Trim().ToLower(); + + if (gameSelected == "a") + { + AdditionGame("Addition game selected"); + } + else if (gameSelected == "s") + { + SubtractionGame("Subtraction game selected"); + } + else if (gameSelected == "m") + { + MultiplicationGame("Multiplication game selected"); + } + else if (gameSelected == "d") + { + DivisionGame("Division game selected"); + } + else if (gameSelected == "q") + { + Console.WriteLine("Goodbye"); + Environment.Exit(1); + } + else + { + Console.WriteLine("Invalid input"); + } + } + + private static void DivisionGame(string message) + { + Console.WriteLine(message); + } + + private static void MultiplicationGame(string message) + { + Console.WriteLine(message); + } + + private static void SubtractionGame(string message) + { + } + + static void AdditionGame(string message) + { + Console.WriteLine(message); + + } + } +} \ No newline at end of file From c7ef9e1bb21bfd2970f3e0efb0d98e0798fc90ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kurti=C4=87=20D=C5=BEemal?= Date: Thu, 27 Aug 2026 23:22:21 +0200 Subject: [PATCH 2/4] Add a lot of code --- .../MathGame.DzemalKurtic/Program.cs | 260 +++++++++++++++--- 1 file changed, 227 insertions(+), 33 deletions(-) diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs index 14cf8e95..788a5c29 100644 --- a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs @@ -2,68 +2,262 @@ { internal class Program { + static List games = new List(); + static void Main(string[] args) + { + string? name = GetName(); + var date = DateTime.UtcNow; + + Menu(name, date); + } + + private static string? GetName() { Console.WriteLine("Please type your name"); var name = Console.ReadLine(); - Console.WriteLine($"Hello {name} this is your Math game"); - - Console.WriteLine($@"What game would you like to play? Choose from options below: - A - Addition - S - Subtraction - M - Multiplication - D - Division - Q - Quit the program"); + return name; + } - Console.WriteLine(); + private static void Menu(string? name, DateTime date) + { + Console.WriteLine($"Hello {name}. It's {date} this is your Math game"); - var gameSelected = Console.ReadLine()?.Trim().ToLower(); + bool isGameOn = true; - if (gameSelected == "a") + do { - AdditionGame("Addition game selected"); - } - else if (gameSelected == "s") - { - SubtractionGame("Subtraction game selected"); - } - else if (gameSelected == "m") - { - MultiplicationGame("Multiplication game selected"); - } - else if (gameSelected == "d") - { - DivisionGame("Division game selected"); - } - else if (gameSelected == "q") - { - Console.WriteLine("Goodbye"); - Environment.Exit(1); - } - else + 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": + GetGames(); + break; + case "a": + AdditionGame("Addition game"); + break; + case "s": + SubtractionGame("Subtraction game"); + break; + case "m": + MultiplicationGame("Multiplication game"); + break; + case "d": + DivisionGame("Division game"); + break; + case "q": + Console.WriteLine("Goodbye"); + isGameOn = false; + break; + default: + Console.WriteLine("Invalid input"); + break; + } + } while (isGameOn); + } + + private static void GetGames() + { + Console.Clear(); + Console.WriteLine("Game History"); + Console.WriteLine("----------------"); + foreach (var game in games) { - Console.WriteLine("Invalid input"); + Console.WriteLine(game); } + Console.WriteLine("----------------"); + Console.WriteLine("Press any key to go back to main menu."); + Console.ReadLine(); } private static void DivisionGame(string message) { - Console.WriteLine(message); + var score = 0; + + for (int i = 0; i < 5; i++) + { + Console.Clear(); + Console.WriteLine(message); + + var divisionNumbers = GetDivisionNumbers(); + var firstNumber = divisionNumbers[0]; + var secondNumber = divisionNumbers[1]; + + Console.WriteLine($"{firstNumber} / {secondNumber}"); + var result = Console.ReadLine(); + + 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(); + } + } + AddToHistory(score, "Division"); } private static 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++) + { + firstNumber = random.Next(1, 9); + secondNumber = random.Next(1, 9); + Console.WriteLine($"{firstNumber} * {secondNumber}"); + + var result = Console.ReadLine(); + + 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(); + } + } + AddToHistory(score, "Multiplication"); } private static 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++) + { + firstNumber = random.Next(1, 9); + secondNumber = random.Next(1, 9); + Console.WriteLine($"{firstNumber} - {secondNumber}"); + + var result = Console.ReadLine(); + + 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(); + } + } + + AddToHistory(score, "Subtraction"); } static 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++) + { + firstNumber = random.Next(1, 9); + secondNumber = random.Next(1, 9); + Console.WriteLine($"{firstNumber} + {secondNumber}"); + + var result = Console.ReadLine(); + + 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(); + } + } + + AddToHistory(score, "Addition"); + } + + private static void AddToHistory(int gameScore, string gameType) + { + games.Add($"{DateTime.Now} - {gameType}: {gameScore} pts"); + } + + 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; } } } \ No newline at end of file From caec4d283b3ce19157c12d65681769fd21f271b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kurti=C4=87=20D=C5=BEemal?= Date: Fri, 28 Aug 2026 07:44:25 +0200 Subject: [PATCH 3/4] Refactor --- .../MathGame.DzemalKurtic/GameEngine.cs | 167 ++++++++++++++++++ .../MathGame.DzemalKurtic/Helpers.cs | 49 +++++ .../MathGame.DzemalKurtic/Menu.cs | 56 ++++++ .../MathGame.DzemalKurtic/Program.cs | 13 +- 4 files changed, 283 insertions(+), 2 deletions(-) create mode 100644 MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs create mode 100644 MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs create mode 100644 MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs new file mode 100644 index 00000000..dd89d20a --- /dev/null +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs @@ -0,0 +1,167 @@ +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(); + + 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, "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(); + + 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, "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(); + + 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, "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(); + + 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, "Addition"); + } + } +} diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs new file mode 100644 index 00000000..a0b8cd0e --- /dev/null +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; + +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); + } + Console.WriteLine("----------------"); + Console.WriteLine("Press any key to go back to main menu."); + Console.ReadLine(); + } + + internal static void AddToHistory(int gameScore, string gameType) + { + games.Add($"{DateTime.Now} - {gameType}: {gameScore} pts"); + } + + 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; + } + } +} diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs new file mode 100644 index 00000000..b5f9648d --- /dev/null +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs @@ -0,0 +1,56 @@ +namespace MathGame.DzemalKurtic +{ + internal class Menu + { + GameEngine gameEngine = new(); + internal void ShowMenu(string? name, DateTime date) + { + Console.WriteLine($"Hello {name}. It's {date} this is your Math game"); + + 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/Program.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs index 788a5c29..63583bd6 100644 --- a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs @@ -6,10 +6,12 @@ internal class Program static void Main(string[] args) { + var menu = new Menu(); + string? name = GetName(); var date = DateTime.UtcNow; - Menu(name, date); + menu.ShowMenu(name, date); } private static string? GetName() @@ -19,7 +21,7 @@ static void Main(string[] args) return name; } - private static void Menu(string? name, DateTime date) + /* private static void Menu(string? name, DateTime date) { Console.WriteLine($"Hello {name}. It's {date} this is your Math game"); @@ -67,7 +69,9 @@ private static void Menu(string? name, DateTime date) } } while (isGameOn); } + */ + /* private static void GetGames() { Console.Clear(); @@ -82,6 +86,8 @@ private static void GetGames() Console.ReadLine(); } + /* + private static void DivisionGame(string message) { var score = 0; @@ -234,7 +240,9 @@ static void AdditionGame(string message) AddToHistory(score, "Addition"); } + */ + /* private static void AddToHistory(int gameScore, string gameType) { games.Add($"{DateTime.Now} - {gameType}: {gameScore} pts"); @@ -259,5 +267,6 @@ static int[] GetDivisionNumbers() return result; } + */ } } \ No newline at end of file From bca1a0ac1eedc741c13e0be5e0c797dda5750af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kurti=C4=87=20D=C5=BEemal?= Date: Fri, 28 Aug 2026 08:50:57 +0200 Subject: [PATCH 4/4] Finish --- .../MathGame.DzemalKurtic/GameEngine.cs | 16 +- .../MathGame.DzemalKurtic/Helpers.cs | 42 ++- .../MathGame.DzemalKurtic/Menu.cs | 6 +- .../MathGame.DzemalKurtic/Models/Game.cs | 19 ++ .../MathGame.DzemalKurtic/Program.cs | 260 +----------------- 5 files changed, 72 insertions(+), 271 deletions(-) create mode 100644 MathGame.DzemalKurtic/MathGame.DzemalKurtic/Models/Game.cs diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs index dd89d20a..0011f204 100644 --- a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/GameEngine.cs @@ -1,4 +1,6 @@ -namespace MathGame.DzemalKurtic +using MathGame.DzemalKurtic.Models; + +namespace MathGame.DzemalKurtic { internal class GameEngine { @@ -17,6 +19,7 @@ internal void DivisionGame(string message) Console.WriteLine($"{firstNumber} / {secondNumber}"); var result = Console.ReadLine(); + result = Helpers.ValidateResult(result); if (int.Parse(result) == firstNumber / secondNumber) { @@ -36,7 +39,7 @@ internal void DivisionGame(string message) Console.ReadLine(); } } - Helpers.AddToHistory(score, "Division"); + Helpers.AddToHistory(score, GameType.Division); } internal void MultiplicationGame(string message) @@ -58,6 +61,7 @@ internal void MultiplicationGame(string message) Console.WriteLine($"{firstNumber} * {secondNumber}"); var result = Console.ReadLine(); + result = Helpers.ValidateResult(result); if (int.Parse(result) == firstNumber * secondNumber) { @@ -77,7 +81,7 @@ internal void MultiplicationGame(string message) Console.ReadLine(); } } - Helpers.AddToHistory(score, "Multiplication"); + Helpers.AddToHistory(score, GameType.Multiplication); } internal void SubtractionGame(string message) @@ -99,6 +103,7 @@ internal void SubtractionGame(string message) Console.WriteLine($"{firstNumber} - {secondNumber}"); var result = Console.ReadLine(); + result = Helpers.ValidateResult(result); if (int.Parse(result) == firstNumber - secondNumber) { @@ -119,7 +124,7 @@ internal void SubtractionGame(string message) } } - Helpers.AddToHistory(score, "Subtraction"); + Helpers.AddToHistory(score, GameType.Subtraction); } internal void AdditionGame(string message) @@ -141,6 +146,7 @@ internal void AdditionGame(string message) Console.WriteLine($"{firstNumber} + {secondNumber}"); var result = Console.ReadLine(); + result = Helpers.ValidateResult(result); if (int.Parse(result) == firstNumber + secondNumber) { @@ -161,7 +167,7 @@ internal void AdditionGame(string message) } } - Helpers.AddToHistory(score, "Addition"); + Helpers.AddToHistory(score, GameType.Addition); } } } diff --git a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs index a0b8cd0e..7052a06d 100644 --- a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Helpers.cs @@ -1,12 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Text; +using MathGame.DzemalKurtic.Models; namespace MathGame.DzemalKurtic { internal class Helpers { - internal static List games = new List(); + internal static List games = new List(); internal static void PrintGames() { Console.Clear(); @@ -14,16 +12,21 @@ internal static void PrintGames() Console.WriteLine("----------------"); foreach (var game in games) { - Console.WriteLine(game); + 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, string gameType) + internal static void AddToHistory(int gameScore, GameType gameType) { - games.Add($"{DateTime.Now} - {gameType}: {gameScore} pts"); + games.Add(new Game + { + Date = DateTime.Now, + Score = gameScore, + Type = gameType + }); } internal static int[] GetDivisionNumbers() @@ -45,5 +48,30 @@ internal static int[] GetDivisionNumbers() 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/Menu.cs b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs index b5f9648d..c2e40ceb 100644 --- a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Menu.cs @@ -5,7 +5,11 @@ internal class Menu GameEngine gameEngine = new(); internal void ShowMenu(string? name, DateTime date) { - Console.WriteLine($"Hello {name}. It's {date} this is your Math game"); + 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; 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 index 63583bd6..22e2abd0 100644 --- a/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs +++ b/MathGame.DzemalKurtic/MathGame.DzemalKurtic/Program.cs @@ -2,271 +2,15 @@ { internal class Program { - static List games = new List(); - static void Main(string[] args) { var menu = new Menu(); - string? name = GetName(); + string? name = Helpers.GetName(); + var date = DateTime.UtcNow; menu.ShowMenu(name, date); } - - private static string? GetName() - { - Console.WriteLine("Please type your name"); - var name = Console.ReadLine(); - return name; - } - - /* private static void Menu(string? name, DateTime date) - { - Console.WriteLine($"Hello {name}. It's {date} this is your Math game"); - - 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": - GetGames(); - break; - case "a": - AdditionGame("Addition game"); - break; - case "s": - SubtractionGame("Subtraction game"); - break; - case "m": - MultiplicationGame("Multiplication game"); - break; - case "d": - DivisionGame("Division game"); - break; - case "q": - Console.WriteLine("Goodbye"); - isGameOn = false; - break; - default: - Console.WriteLine("Invalid input"); - break; - } - } while (isGameOn); - } - */ - - /* - private static void GetGames() - { - Console.Clear(); - Console.WriteLine("Game History"); - Console.WriteLine("----------------"); - foreach (var game in games) - { - Console.WriteLine(game); - } - Console.WriteLine("----------------"); - Console.WriteLine("Press any key to go back to main menu."); - Console.ReadLine(); - } - - /* - - private static void DivisionGame(string message) - { - var score = 0; - - for (int i = 0; i < 5; i++) - { - Console.Clear(); - Console.WriteLine(message); - - var divisionNumbers = GetDivisionNumbers(); - var firstNumber = divisionNumbers[0]; - var secondNumber = divisionNumbers[1]; - - Console.WriteLine($"{firstNumber} / {secondNumber}"); - var result = Console.ReadLine(); - - 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(); - } - } - AddToHistory(score, "Division"); - } - - private static 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++) - { - firstNumber = random.Next(1, 9); - secondNumber = random.Next(1, 9); - Console.WriteLine($"{firstNumber} * {secondNumber}"); - - var result = Console.ReadLine(); - - 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(); - } - } - AddToHistory(score, "Multiplication"); - } - - private static 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++) - { - firstNumber = random.Next(1, 9); - secondNumber = random.Next(1, 9); - Console.WriteLine($"{firstNumber} - {secondNumber}"); - - var result = Console.ReadLine(); - - 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(); - } - } - - AddToHistory(score, "Subtraction"); - } - - static 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++) - { - firstNumber = random.Next(1, 9); - secondNumber = random.Next(1, 9); - Console.WriteLine($"{firstNumber} + {secondNumber}"); - - var result = Console.ReadLine(); - - 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(); - } - } - - AddToHistory(score, "Addition"); - } - */ - - /* - private static void AddToHistory(int gameScore, string gameType) - { - games.Add($"{DateTime.Now} - {gameType}: {gameScore} pts"); - } - - 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; - } - */ } } \ No newline at end of file