static void Paint(Dude d) { if (d.LastX >= 0) { Console.BackgroundColor = ConsoleColor.DarkGreen; Console.CursorLeft = d.LastX; Console.CursorTop = d.LastY; Console.Write(" "); } Console.ForegroundColor = d.Color; Console.BackgroundColor = ConsoleColor.Cyan; Console.CursorLeft = d.X; Console.CursorTop = d.Y; Console.Write("?"); d.LastX = d.X; d.LastY = d.Y; }
static void Main(string[] args) { var d = new Dude { X = Console.WindowWidth / 2, Y = Console.WindowHeight / 2, Color = ConsoleColor.Blue }; var options = new List <string> { "Quit", "Beep", "Colorize" }; var selectedOption = 0; PaintBackground(); PaintMenu(options, selectedOption); var keepGoing = true; ConsoleKeyInfo key; do { Paint(d); key = Console.ReadKey(intercept: true); switch (key.Key) { case ConsoleKey.Escape: keepGoing = false; break; case ConsoleKey.LeftArrow: d.X--; break; case ConsoleKey.RightArrow: d.X++; break; case ConsoleKey.UpArrow: d.Y--; break; case ConsoleKey.DownArrow: d.Y++; break; case ConsoleKey.Tab: selectedOption++; if (selectedOption >= options.Count) { selectedOption = 0; } PaintMenu(options, selectedOption); break; case ConsoleKey.Enter: if (options[selectedOption] == "Quit") { keepGoing = false; } else if (options[selectedOption] == "Beep") { Console.Beep(); } else if (options[selectedOption] == "Colorize") { d.Color = (ConsoleColor)random.Next(16); } break; } } while (keepGoing); }