using System; using System.Threading; namespace ConsoleMenu { enum MenuOptions { Play = 0, Credits, Exit } class Menu { public MenuOptions SelectedItem { get; set; } public const string menuText = "{0,-3}Play\n{1,-3}Credits\n{2,-3}Exit"; public Menu() { SelectedItem = MenuOptions.Play; } public MenuOptions ShowMenu() { Console.CursorVisible = false; ConsoleKeyInfo key; SelectedItem = MenuOptions.Play; do { Console.Clear(); Console.WriteLine(menuText, GetPrefix(SelectedItem == MenuOptions.Play), GetPrefix(SelectedItem == MenuOptions.Credits), GetPrefix(SelectedItem == MenuOptions.Exit)); key = Console.ReadKey(); if (key.Key == ConsoleKey.UpArrow) SelectedItem = MenuUp(SelectedItem); else if (key.Key == ConsoleKey.DownArrow) SelectedItem = MenuDown(SelectedItem); } while (key.Key != ConsoleKey.Enter); Console.CursorVisible = true; return SelectedItem; } public string GetPrefix(bool selected) { return selected ? ">" : ""; } public MenuOptions MenuUp(MenuOptions current) { if (current == MenuOptions.Play) return MenuOptions.Exit; else return current - 1; } public MenuOptions MenuDown(MenuOptions current) { if (current == MenuOptions.Exit) return MenuOptions.Play; else return current + 1; } } }