From 28041f40313312d14fead194f1c41c07818fb169 Mon Sep 17 00:00:00 2001 From: Brian Young Date: Wed, 24 Feb 2021 18:23:13 -0800 Subject: [PATCH] Added csharp version of Russion Roulette --- .../csharp/RussianRoulette/Program.cs | 106 ++++++++++++++++++ .../RussianRoulette/RussianRoulette.csproj | 8 ++ .../RussianRoulette/RussianRoulette.sln | 25 +++++ 3 files changed, 139 insertions(+) create mode 100644 76 Russian Roulette/csharp/RussianRoulette/Program.cs create mode 100644 76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.csproj create mode 100644 76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.sln diff --git a/76 Russian Roulette/csharp/RussianRoulette/Program.cs b/76 Russian Roulette/csharp/RussianRoulette/Program.cs new file mode 100644 index 00000000..43a8d4bc --- /dev/null +++ b/76 Russian Roulette/csharp/RussianRoulette/Program.cs @@ -0,0 +1,106 @@ +using System; + +namespace RussianRoulette +{ + public class Program + { + public static void Main(string[] args) + { + PrintTitle(); + + var includeRevolver = true; + while (true) + { + PrintInstructions(includeRevolver); + switch (PlayGame()) + { + case GameResult.Win: + includeRevolver = true; + break; + case GameResult.Chicken: + case GameResult.Dead: + includeRevolver = false; + break; + } + } + } + + private static void PrintTitle() + { + Console.WriteLine(" Russian Roulette"); + Console.WriteLine("Creative Computing Morristown, New Jersey"); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("This is a game of >>>>>>>>>>Russian Roulette."); + } + + private static void PrintInstructions(bool includeRevolver) + { + Console.WriteLine(); + if (includeRevolver) + { + Console.WriteLine("Here is a revolver."); + } + else + { + Console.WriteLine(); + Console.WriteLine(); + Console.WriteLine("...Next Victim..."); + } + Console.WriteLine("Type '1' to spin chamber and pull trigger."); + Console.WriteLine("Type '2' to give up."); + } + + private static GameResult PlayGame() + { + var rnd = new Random(); + var round = 0; + while (true) + { + round++; + Console.Write("Go: "); + var input = Console.ReadKey().KeyChar; + Console.WriteLine(); + if (input != '2') + { + // Random.Next will retun a value that is the same or greater than the minimum and + // less than the maximum. + // A revolver has 6 rounds. + if (rnd.Next(1, 7) == 6) + { + Console.WriteLine(" Bang!!!!! You're dead!"); + Console.WriteLine("Condolences will be sent to your relatives."); + return GameResult.Dead; + } + else + { + if (round > 10) + { + Console.WriteLine("You win!!!!!"); + Console.WriteLine("Let someone else blow their brains out."); + return GameResult.Win; + } + else + { + Console.WriteLine("- CLICK -"); + Console.WriteLine(); + } + } + } + else + { + Console.WriteLine(" CHICKEN!!!!!"); + return GameResult.Chicken; + } + } + } + + private enum GameResult + { + Win, + Chicken, + Dead + } + } +} diff --git a/76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.csproj b/76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.csproj new file mode 100644 index 00000000..20827042 --- /dev/null +++ b/76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.csproj @@ -0,0 +1,8 @@ + + + + Exe + net5.0 + + + diff --git a/76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.sln b/76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.sln new file mode 100644 index 00000000..1e4b621e --- /dev/null +++ b/76 Russian Roulette/csharp/RussianRoulette/RussianRoulette.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31019.35 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RussianRoulette", "RussianRoulette.csproj", "{9F052B4A-FA33-4BBE-9D9D-3CF8152569F1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9F052B4A-FA33-4BBE-9D9D-3CF8152569F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9F052B4A-FA33-4BBE-9D9D-3CF8152569F1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9F052B4A-FA33-4BBE-9D9D-3CF8152569F1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9F052B4A-FA33-4BBE-9D9D-3CF8152569F1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {97F5B1B0-A80A-4C1F-9F76-8D68B4A49E82} + EndGlobalSection +EndGlobal