From f3fc5632af37322d02c8b70692342b239811bb1e Mon Sep 17 00:00:00 2001 From: Brychan Dempsey Date: Wed, 6 Oct 2021 14:25:26 +1300 Subject: [PATCH] Added solution files --- App.config | 6 + Program.cs | 556 +++++++++++++++++++++++++++++++++++++ Properties/AssemblyInfo.cs | 36 +++ RollerWheel.csproj | 60 ++++ 4 files changed, 658 insertions(+) create mode 100644 App.config create mode 100644 Program.cs create mode 100644 Properties/AssemblyInfo.cs create mode 100644 RollerWheel.csproj diff --git a/App.config b/App.config new file mode 100644 index 0000000..88fa402 --- /dev/null +++ b/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..de26dd7 --- /dev/null +++ b/Program.cs @@ -0,0 +1,556 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; + +namespace RollerWheel +{ + class Program + { + static string[] gapChars = new string[] { " |##############|", " |--------------|" }; + static string[] rollers = new string[] { + " |##############|", " |### ##|", " |########## ##|", " |### ##|", " |### #########|", " |### ##|", // Two + " |##############|", " |### ##|", " |########## ##|", " |### ##|", " |########## ##|", " |### ##|", // Three + " |##############|", " |### ##### ##|", " |### ##### ##|", " |### ##|", " |########## ##|", " |########## ##|", // Four + " |##############|", " |### ##|", " |### #########|", " |### ##|", " |########## ##|", " |### ##|", // Five + " |##############|", " |### ##|", " |### #########|", " |### ##|", " |### ##### ##|", " |### ##|", // Six + " |##############|", " |#### ###|", " |######## ####|", " |####### #####|", " |###### ######|", " |##### #######|" }; // Seven + static int[] titleBools = new int[] { + 1,0,0,0,0,0,0,1,1, // First Line + 1,0,0,1,1,1,1,1,1, + 1,0,0,0,0,0,0,0,1, + 1,0,0,0,0,0,0,0,1, + 1,0,0,0,0,0,0,0,1,2, + + 1,0,0,1,1,1,1,1,1, // Second Line + 1,0,0,1,1,1,1,1,1, + 1,0,0,1,1,1,0,0,1, + 1,1,1,1,0,0,1,1,1, + 1,0,0,1,1,1,1,1,1,2, + + 1,0,0,0,0,0,0,0,1, // Third Line + 1,0,0,1,1,1,1,1,1, + 1,0,0,1,1,1,0,0,1, + 1,1,1,1,0,0,1,1,1, + 1,0,0,0,0,0,0,0,1,2, + + 1,1,1,1,1,1,0,0,1, // Fourth Line + 1,0,0,1,1,1,1,1,1, + 1,0,0,1,1,1,0,0,1, + 1,1,1,1,0,0,1,1,1, + 1,1,1,1,1,1,0,0,1,2, + + 1,0,0,0,0,0,0,0,1, // Fith Line + 1,0,0,0,0,0,0,1,1, + 1,0,0,0,0,0,0,0,1, + 1,1,1,1,0,0,1,1,1, + 1,0,0,0,0,0,0,0,1,2, + }; +#if DEBUG + static bool verbose = false; +#endif + static bool drawTitle() + { +#if DEBUG + if (!verbose) + { + +#endif + Console.Clear(); +#if DEBUG + } +#endif +#if DEBUG + Console.BackgroundColor = ConsoleColor.Red; +#else + Console.BackgroundColor = ConsoleColor.Green; +#endif + string writeString = ""; + for (int r = 0; r < 45; r++) + { + writeString += " "; + } + Console.WriteLine(writeString); + for (int i = 0; i < titleBools.Length; i++) + { + if (titleBools[i] == 2) + { + Console.Write(Environment.NewLine); + } + if (titleBools[i] == 1) + { + switch (Console.BackgroundColor) + { + case ConsoleColor.Green: + Console.Write(" "); + break; + case ConsoleColor.Black: + Console.BackgroundColor = ConsoleColor.Green; +#if DEBUG + Console.BackgroundColor = ConsoleColor.Red; +#endif + Console.Write(" "); + break; +#if DEBUG + case ConsoleColor.Red: + Console.Write(" "); + break; +#endif + } + } + else if (titleBools[i] != 2) + { + switch (Console.BackgroundColor) + { + case ConsoleColor.Black: + Console.Write(" "); + break; + case ConsoleColor.Green: + + Console.BackgroundColor = ConsoleColor.Black; + Console.Write(" "); + break; +#if DEBUG + case ConsoleColor.Red: + Console.BackgroundColor = ConsoleColor.Black; + Console.Write(" "); + break; +#endif + } + } + } + Console.WriteLine(writeString); + Console.ResetColor(); +#if DEBUG + Console.ForegroundColor = ConsoleColor.DarkRed; + Console.WriteLine("DEBUG VERSION ! DEBUG VERSION ! DEBUG VERSION"); +#else + Console.ForegroundColor = ConsoleColor.DarkGreen; +#endif + Console.WriteLine("Slots! A command prompt-based game!"); + Console.WriteLine("Written in C# by Brychan Dempsey"); + Console.WriteLine(""); + drawCommands(); + return true; + } + static bool drawCommands() + { + Console.ForegroundColor = ConsoleColor.White; + Console.Write("Press "); + Console.ForegroundColor = ConsoleColor.Red; + Console.Write("\'b\'"); + Console.ForegroundColor = ConsoleColor.White; + Console.Write(" to begin, "); + Console.ForegroundColor = ConsoleColor.Red; + Console.Write("\'Esc\'"); + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine(" to cancel."); + Console.Write("Pressing "); + Console.ForegroundColor = ConsoleColor.Red; + Console.Write("Spacebar"); + Console.ForegroundColor = ConsoleColor.White; + Console.WriteLine(" at any point will stop the rollers"); + return true; + } + // Character ranges are 0-5, 6-11, 12-17, 18-23, 24-29, 30-35 + static void Main(string[] args) + { + ConsoleKeyInfo readKey; +#if DEBUG + if(args.Length > 0) + { + if (args[0] == "-v") + { + verbose = true; + } + } + Console.Title = "Slots! - a C# game by Brychan Dempsey - DEBUG VERSION"; +#else + Console.Title = "Slots! - a C# game by Brychan Dempsey"; +#endif + drawTitle(); + redrawnCommands: +#if DEBUG + + if (!verbose) + { +#endif + readKey = Console.ReadKey(); + if (readKey.Key == ConsoleKey.B) + { + + } + else if (readKey.Key == ConsoleKey.Escape) + { + Environment.Exit(0); + } + else + { + Console.WriteLine("Invalid command. Try again:"); + drawCommands(); + goto redrawnCommands; + } +#if DEBUG + } +#endif + Thread thread1 = new Thread(new ThreadStart(readingKey)); + thread1.Start(); + + if (doRoller()) + { + Console.ResetColor(); + Console.WriteLine("Success!"); + } + else + { + Console.WriteLine("Something Went Wrong!"); + } + int finalone = 0; + int finaltwo = 0; + int finalthree = 0; + if (finalindexone + 9 < rollers.Length) + { + finalone = (finalindexone + 9) / 6 + 2; + } + else + { + finalone = ((finalindexone + 9) - rollers.Length) / 6 + 2; + } + if (finalindextwo + 9 < rollers.Length) + { + finaltwo = (finalindextwo + 9) / 6 + 2; + } + else + { + finaltwo = ((finalindextwo + 9) - rollers.Length) / 6 + 2; + } + if (finalindexthree + 9 < rollers.Length) + { + finalthree = (finalindexthree + 9) / 6 + 2; + } + else + { + finalthree = ((finalindexthree + 9) - rollers.Length) / 6 + 2; + } + Console.WriteLine("Final numbers are: {0} {1} {2}", finalone, finaltwo, finalthree); +#if DEBUG + Console.WriteLine("Final numbers are: {0} {1} {2}", finalindexone, finalindextwo, finalindexthree); + Console.WriteLine("Final numbers are: {0} {1} {2}", (finalindexone + 9)/6, (finalindextwo + 9)/6, (finalindexthree+9)/6); +#endif + finalExitPrompt: + readKey = Console.ReadKey(); + if (readKey.Key == ConsoleKey.Escape) + { + Environment.Exit(0); + } + else + { + goto finalExitPrompt; + } + } + public static void readingKey() + { + + while (!threelocked) + { + ConsoleKeyInfo readKey = Console.ReadKey(); + if (readKey.Key == ConsoleKey.Spacebar) + { + Console.Beep(); + Random rand = new Random(); + //int wait = rand.Next() / 5000000; + // Thread.Sleep(wait); + if (onelocked) + { + if (twolocked) + { + finalindexthree = rollerthreeIndex; +#if DEBUG + Console.Write(finalindexthree); +#endif + threelocked = true; + } + else + { + finalindextwo = rollertwoIndex; + twolocked = true; + } + } + else + { + finalindexone = rolleroneIndex; + onelocked = true; + } + } + //Thread.Sleep(300); + + } + + + } + + static void clearScreen() + { +#if DEBUG + if (!verbose) + { +#endif + Console.SetCursorPosition(0, 0); +#if DEBUG + } +#endif + } + + /// + /// Begins rolling the rollers + /// + /// true if rolling was successful + static bool doRoller() + { + int firstStarting = 7; + int secondStarting = 7; + int thirdStarting = 7; + + drawDisplay(firstStarting, secondStarting, thirdStarting); + + return true; + } + static int rolleroneIndex = 0; + static int rollertwoIndex = 0; + static int rollerthreeIndex = 0; + + static int finalindexone = 0; + static int finalindextwo = 0; + static int finalindexthree = 0; + + static bool onelocked = false; + static bool twolocked = false; + static bool threelocked = false; + /// + /// Draws the display using the numbers provided + /// + /// number for the first roller + /// number for the second roller + /// number for the third roller + /// Returns true if successfull + static bool drawDisplay(int startone, int starttwo, int startthree) + { + createString(startone, starttwo, startthree); + //for (int r = 0; r < 10000; r++) + while(!threelocked) + { + if (onelocked) + { + rolleroneIndex = finalindexone; + } + if (twolocked) + { + rollertwoIndex = finalindextwo; + } + if (threelocked) + { + rollerthreeIndex = finalindexthree; + + } + clearScreen(); + for (int i = 0; i < 20; i++) + { + if (i < 3 || i > 15) + { + Console.ForegroundColor = ConsoleColor.DarkGray; + } + else if (i < 6 || i > 11) + { + Console.ForegroundColor = ConsoleColor.Gray; + } + else if (i > 5 && i < 12) + { + Console.ForegroundColor = ConsoleColor.White; + } + + if (i == 0 || i == 19) + { + Console.WriteLine("\t" + gapChars[1] + gapChars[1] + gapChars[1]); + } + if ((rolleroneIndex + i) == rollers.Length) + { + rolleroneIndex = 0 - i; + } + if ((rollertwoIndex + i) == rollers.Length) + { + rollertwoIndex = 0 - i; + } + if ((rollerthreeIndex + i) == rollers.Length) + { + rollerthreeIndex = 0 - i; + } + if (i > 0 && i < 19) + { + if (i == 10) + { + Console.ForegroundColor = ConsoleColor.DarkGray; +#if DEBUG + int currentPos = Console.CursorTop; + Console.WriteLine("--------" + spinFirst(i) + spinSecond(i) + spinThird(i) + "--------\t\t\t"); + if (!verbose) + { + Console.SetCursorPosition(0, currentPos); + Console.WriteLine("--------" + spinFirst(i) + spinSecond(i) + spinThird(i) + "-------- {0} {1} {2}", rolleroneIndex, rollertwoIndex, rollerthreeIndex); + } + +#else + + Console.WriteLine("--------" + spinFirst(i) + spinSecond(i) + spinThird(i) + "--------"); +#endif + } + else + { + Console.WriteLine("\t" + spinFirst(i) + spinSecond(i) + spinThird(i)); + } + + } + + + } + if (rolleroneIndex < 0) + { + rolleroneIndex = rollers.Length + rolleroneIndex; + } + if (rollertwoIndex < 0) + { + rollertwoIndex = rollers.Length + rollertwoIndex; + } + if (rollerthreeIndex < 0) + { + rollerthreeIndex = rollers.Length + rollerthreeIndex; + } + int currentPos2 = Console.CursorTop; +#if DEBUG + + if (!verbose) + { + Console.WriteLine("--------\t\t\t"); + Console.SetCursorPosition(0, currentPos2); + Console.WriteLine("-------- {0} {1} {2}", rolleroneIndex, rollertwoIndex, rollerthreeIndex); + } + +#endif + + rolleroneIndex += 1; + rollertwoIndex += 1; + rollerthreeIndex += 1; +#if DEBUG + Thread.Sleep(500); +#else + Thread.Sleep(5); +#endif + + } + + return true; + } + static string spinFirst(int i) + { + if (onelocked) + { + return rollers[rolleroneIndex + i]; + } + else + { + return rollers[rolleroneIndex + i]; + } + } + static string spinSecond(int i) + { + if (twolocked) + { + return rollers[rollertwoIndex + i]; + } + else + { + return rollers[rollertwoIndex + i]; + } + } + static string spinThird(int i) + { + if (threelocked) + { + return rollers[rollerthreeIndex + i]; + } + else + { + return rollers[rollerthreeIndex + i]; + } + } + + static void createString(int firstnumber, int secondnumber, int thirdnumber) + { + switch (firstnumber) + { + case 2: + rolleroneIndex = 0; + break; + case 3: + rolleroneIndex = 6; + break; + case 4: + rolleroneIndex = 12; + break; + case 5: + rolleroneIndex = 18; + break; + case 6: + rolleroneIndex = 24; + break; + case 7: + rolleroneIndex = 30; + break; + } + switch (secondnumber) + { + case 2: + rollertwoIndex = 0; + break; + case 3: + rollertwoIndex = 6; + break; + case 4: + rollertwoIndex = 12; + break; + case 5: + rollertwoIndex = 18; + break; + case 6: + rollertwoIndex = 24; + break; + case 7: + rollertwoIndex = 30; + break; + } + switch (thirdnumber) + { + case 2: + rollerthreeIndex = 0; + break; + case 3: + rollerthreeIndex = 6; + break; + case 4: + rollerthreeIndex = 12; + break; + case 5: + rollerthreeIndex = 18; + break; + case 6: + rollerthreeIndex = 24; + break; + case 7: + rollerthreeIndex = 30; + break; + } + } + + } + +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a664fbe --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("RollerWheel")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RollerWheel")] +[assembly: AssemblyCopyright("Copyright © 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("49d923ca-4a31-4c41-8389-ba6fbaa74c43")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RollerWheel.csproj b/RollerWheel.csproj new file mode 100644 index 0000000..67b58a4 --- /dev/null +++ b/RollerWheel.csproj @@ -0,0 +1,60 @@ + + + + + Debug + AnyCPU + {49D923CA-4A31-4C41-8389-BA6FBAA74C43} + Exe + Properties + RollerWheel + RollerWheel + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file