public static void Main() { Regex rex = new Regex("[0-1]?[0-9]x[0-1]?[0-9]"); string command = ""; var stuffs = Initialize(rex, command); BulletMatrix frame = new BulletMatrix(stuffs.Y, stuffs.X); frame.Load(false); //Console.Clear(); frame.BalanceGrid(true, true); do { command = ""; rex = new Regex("[0-9A-Z][0-9A-Z]x[0-9A-Z][0-9A-Z]|quit"); command = PromptForCommand(rex, command, frame); frame.enablePrinting = true; if (!Regex.IsMatch(command, "quit")) { KeyValuePair<string, string> stuff = ParseCommandIntoSwapCodes(command); Position2D start = frame.CommandToPosition(stuff.Key); Position2D end = frame.CommandToPosition(stuff.Value); if (!frame.CanSwapPositions(start, end)) { Console.WriteLine("these pieces can't be swapped..."); System.Threading.Thread.Sleep(750); //Console.Clear(); continue; } //Console.Clear(); frame.Debug_PrintBulletMatrix(); System.Threading.Thread.Sleep(100); frame.SwapPositions(start, end); //Console.SetCursorPosition(0, 0); frame.Debug_PrintBulletMatrix(); System.Threading.Thread.Sleep(100); var matches = frame.CollectMatchedBullets(); if (matches.Count == 0) { Console.WriteLine(); Console.WriteLine("Bad Swap..."); System.Threading.Thread.Sleep(750); frame.SwapPositions(start, end); //Console.Clear(); } frame.BalanceGrid(true, false); //Console.SetCursorPosition(0, 0); frame.Debug_PrintBulletMatrix(); if (!frame.CanMatchMore()) { Console.WriteLine(); Console.WriteLine("No more available matches :'(..."); System.Threading.Thread.Sleep(750); command = ""; rex = new Regex("[YyNn]"); do { Console.WriteLine(); Console.WriteLine("Would you like to play again?[(Y)es or (N)o]:"); command = Console.ReadLine(); } while (!rex.IsMatch(command)); if (Regex.IsMatch(command, "[Yy]")) { frame.UnLoad(); frame.Load(true); frame.BalanceGrid(false, true); command = ""; } else { command = "quit"; } } } } while (command != "quit"); Console.WriteLine("GameOver!"); Console.WriteLine("Press any key to continue..."); //Console.ReadKey(true); }
private static string PromptForCommand(Regex rex, string command, BulletMatrix frame) { do { //Console.Clear(); frame.Debug_PrintBulletMatrix(); Console.WriteLine(); Console.WriteLine("Please specify two adjacent pieces to swap, or type quit to leave."); Console.WriteLine("(example: 5Ax52):"); command = Console.ReadLine(); } while (!rex.IsMatch(command) && command != "quit"); return command; }