static void Start(ref Map map, ref Player player) { Rik rik = new Rik("Rik", 10000, 10000); BloodDrake blooddrake = new BloodDrake("Blood Drake", 50, 10); AngryMan angryman = new AngryMan("Angry Man", 70, 10); CastleBoss boss = new CastleBoss("Castle Boss", 250, 10); List <string> menuItems = new List <string>(); int choice; rik.EncounterRik(); // Refactored by Michiel and Alex do { Console.Clear(); map.GetLocation().Description(); choice = ShowMenu(map, ref menuItems, ref player, ref blooddrake, ref angryman); if (choice != menuItems.Count()) { if (validDirections.Contains(menuItems[choice])) { map.Move(menuItems[choice]); } switch (menuItems[choice]) { case ACTION_SEARCH: // Add code to perform an item pickup break; case ACTION_FIGHT: // Add code for fighting here break; case ACTION_RUN: // Add code for running here break; case ACTION_SHOWINVENTORY: player.ShowInventory(); Console.ReadLine(); choice = 0; break; case ACTION_SHOP: Shop shop = new Shop(); shop.ShowShop(ref player); choice = 0; Console.ReadLine(); break; case "Fight the Blood Drake": Console.Clear(); blooddrake.StartEncouter(ref player, ref map); Console.ReadLine(); map.Move("Go North"); break; case "Go via the side of the bridge": Console.Clear(); player.ClimbBridge(ref player); Console.ReadLine(); map.Move("Go North"); break; case ACTION_USEHEALTHPOTION: HealthPotion hp = new HealthPotion("Health Potion", true); hp.UsePotion(ref player); choice = 0; break; case "Fight the man": Console.Clear(); angryman.StartEncounter(ref player, ref map); Console.ReadLine(); break; case "Leave the man": Console.Clear(); map.Move("Go West"); Console.ReadLine(); break; case "Climb over the wall": map.Move("Go North"); break; case "Fight the Boss": Console.Clear(); boss.StartEncounter(ref player); Console.ReadLine(); break; } } } // When the choice is equal to the total item it means exit has been chosen. while (choice < menuItems.Count() - 1); }