Example #1
0
        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);
        }