示例#1
0
        //will return 0 if player wins, 1 if villian wins and 2 if player retreats
        public static int VisitPlanet(Hero player, Villian villian)
        {
            bool playerWins  = false;
            bool villianWins = false;
            bool retreat     = false;

            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("\n" + villian.Story);
            Console.ResetColor();
            do
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("\n" + player);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("\n" + villian + "\n");
                Console.ResetColor();

                //display options
                DisplayMenuOptions.DisplayFightOptions();
                string userInputOption = Console.ReadLine();
                int    userOption;
                if (Int32.TryParse(userInputOption, out userOption))
                {
                    if (userOption == 1 || userOption == 2)
                    {
                        if (userOption == 1)  //attack
                        {
                            //hero attacts villian
                            int villianDamage = player.Attack(villian);
                            if (villian.Life > 0)  //if villian isn't defeated
                            {
                                Console.ForegroundColor = ConsoleColor.DarkCyan;
                                Console.WriteLine($"\n{villian.Name} was struck by {player.Name} for {villianDamage} points.");
                                Console.ResetColor();
                            }
                            else  //if villian is defeated
                            {
                                System.Threading.Thread.Sleep(800);
                                Console.ForegroundColor = ConsoleColor.Blue;
                                Console.WriteLine($"\nYou have defeated {villian.Name}!");
                                Console.WriteLine("You have been awarded 10 points of health, 10 points of max life and 10 points of armour and 300 credits!\n");
                                Console.ResetColor();
                                PlayerUpgrades.AddHealth(player, 10);
                                PlayerUpgrades.AddMaxHealth(player, 10);
                                PlayerUpgrades.AddCredits(player, 300);
                                PlayerUpgrades.AddArmour(player, 10);

                                PlayerUpgrades.AddScore(player, 500);
                                playerWins = true;
                            }

                            //villian attacts hero if villian hasn't been defeated
                            if (!playerWins)
                            {
                                int heroDamage = villian.Attack(player);
                                if (player.Life > 0)
                                {
                                    System.Threading.Thread.Sleep(800);
                                    Console.ForegroundColor = ConsoleColor.DarkMagenta;
                                    Console.WriteLine($"{player.Name} was struck by {villian.Name} for {heroDamage} points.");
                                    Console.ResetColor();
                                }
                                else
                                {
                                    Console.ForegroundColor = ConsoleColor.Blue;
                                    Console.WriteLine($"You have been defeated by {villian.Name}\n");
                                    Console.ResetColor();
                                    villianWins = true;
                                }
                            }
                        }
                        else  //player retreats
                        {
                            retreat = true;
                        }
                    }
                    else
                    {
                        Console.WriteLine("Invalid choice!");
                    }
                }
                else
                {
                    Console.WriteLine("Invalid choice!");
                }
            } while (!playerWins && !villianWins && !retreat);

            //return values based on whats true
            if (playerWins)
            {
                return(0);
            }
            else if (villianWins)
            {
                return(1);
            }
            else
            {
                return(2);
            }
        }