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 void ShowCredits() { Console.Clear(); Console.WriteLine("Written By: insertAlias"); Thread.Sleep(500); Console.WriteLine("Directed By: insertAlias"); Thread.Sleep(500); Console.WriteLine("Produced By: insertAlias"); Thread.Sleep(500); Console.WriteLine("Played By: You!"); Thread.Sleep(500); Console.WriteLine("Press any key to return to the menu."); Console.ReadKey(); } public void Play() { Console.Clear(); Console.WriteLine("Beginning Game..."); Thread.Sleep(500); Console.WriteLine("Playing Game..."); Thread.Sleep(500); Console.WriteLine("Exiting Game..."); } public void Exit() { Console.Clear(); Console.WriteLine("Exiting Game..."); Thread.Sleep(500); } public void 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; } public void DoSelectedAction() { if (SelectedItem == MenuOptions.Play) Play(); else if (SelectedItem == MenuOptions.Exit) Exit(); else ShowCredits(); } 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; } } }