コード例 #1
0
        static void Main(string[] args)
        {
            //Opening screen functionality
            Console.WriteLine(TitleScreen.ShowHeader());
            Console.WriteLine(TitleScreen.ShowOpeningContent());
            Console.Title = "The Castle";

            //Instantiating a base player that the user modifies via PlayerCreation()
            Player player = new Player("", 100, 10, 1000, 1000, 0, Race.Human, null, null, 1, null, null, null);

            player.PlayerCreation(player);

            //Instantiating game Bosses
            List <Monster> bosses = new List <Monster>();

            BossCombat.MakeBosses(bosses);

            //Instantiating and assigning a List of Monsters to call opponents from
            List <Monster> monsters = new List <Monster>();

            PopulateGame.PopulateMonsters(monsters);

            //Instantiating and assigning List of Items for monsters to carry randomly
            List <Item> monsterItems = new List <Item>();

            PopulateGame.PopulateItems(monsterItems);
            //initializing variable to keep track of monsters defeated
            int killcount = 0;

            //condition to exit game loop
            bool exit = false;

            //START OF MAIN GAME LOOP
            do
            {
                //Changing Title to display player stats
                TitleScreen.DisplayPlayerStatsInTitle(player);

                //Adding special weapons later as player levels up
                PopulateGame.AddSpecialWeapon(player, monsterItems);

                //Getting a random monster from List<>monsters
                Monster monster = Monster.GetRandomMonster(monsters);

                //Making sure monster doesn't have an item
                Monster.UnequipMonster(monster);

                //equip monster differently
                Monster.EquipMonster(monster, monsterItems);
                bool reloadRoom = false;
                do
                {
                    Combat.AlertPlayerOfMonster(monster);
                    ConsoleKey userChoice = Console.ReadKey().Key;
                    Console.Clear();
                    switch (userChoice)
                    {
                    //player chooses attack
                    case ConsoleKey.A:
                        Combat.DoBattle(player, monster);
                        if (monster.Life < 1)
                        {
                            Monster.MonsterIsDead(monster);
                            //if more than 20 items, inventory is full
                            if (player.Inventory.ShowNumberOfItems() >= 20)
                            {
                                Player.PlayerInventoryIsFull();
                                monster.RemoveMonsterItem(monster);
                            }
                            //if not transfer items
                            else
                            {
                                monster.TransferItem(monster, player);
                                monster.RemoveMonsterItem(monster);
                            }
                            //exit loop to get a new room and monster
                            reloadRoom = true;
                            killcount++;
                            //player assumes monsters XP
                            Player.AddMonsterXPToPlayer(player, monster);
                            Player.CheckLevel(player);
                            Player.PlayerLevelBonus(player);
                            //If the player reaches certain XP thresholds, the player fights a boss
                            BossCombat.CheckXPForBossBattle(player, bosses);
                            if (player.QuestItemsList.Count == 5)
                            {
                                WinningScreen.YouveWon(player);
                                reloadRoom = true;
                                exit       = true;
                            }
                        }
                        break;

                    //Run away and get another room and monster
                    case ConsoleKey.R:
                        //gives the monster a chance to attack as player runs away
                        Combat.PlayerRunAwayBattle(player, monster);
                        reloadRoom = true;
                        break;

                    //Display player stats
                    case ConsoleKey.P:
                        Console.WriteLine(player + "\nMonsters Slain: " + killcount);
                        break;

                    //Display monster stats
                    case ConsoleKey.M:
                        Console.WriteLine(monster);
                        break;

                    //leave game
                    case ConsoleKey.Escape:
                        Console.WriteLine("Goodbye brave warrior...");
                        exit = true;
                        break;

                    //use potion
                    case ConsoleKey.U:
                        //check to see if a potions is equipped before use
                        Player.CheckEquippedPotion(player);
                        break;

                    //View player inventory
                    case ConsoleKey.I:
                        player.Inventory.GetItem(player);
                        break;

                    default:
                        Console.WriteLine("You have made an error.  Please select again.");
                        break;
                    }
                    //player death
                    if (player.Life < 1)
                    {
                        Console.WriteLine("You have perished at the hands of the " + monster.Name + "!");
                        exit = true;
                    }
                } while (!reloadRoom && !exit);
            } while (!exit);

            Console.WriteLine("GAME OVER \n\nYou killed {0} monster{1}! ",
                              killcount,
                              killcount == 1 ? "" : "s");
        } //end main