Exemplo n.º 1
0
        static void Main(string[] args)
        {
            //create a pet to use as an object for calling PrintCenter()
            //Is there a better way to do this?
            VirtualPet aPet = new VirtualPet();

            //Welcome text introducing user to the page.
            string welcome  = "Welcome to dragon training!";
            string welcome1 = "Oh, wait, sorry. This isn't Berk.";
            string welcome2 = "What I meant to say was:";
            string welcome3 = "WELCOME TO THE DRAGON HATCHERY";

            //print centered welcome text
            aPet.PrintCenter(welcome);
            aPet.PrintCenter(welcome1);
            aPet.PrintCenter(welcome2);
            aPet.PrintCenter(welcome3);

            //create space
            Console.WriteLine();
            Console.WriteLine();

            //Introduction text - introduces dragons and some of the guidelines
            string intro   = "So you want to adopt a dragon.";
            string intro1  = "Before you decide to go through with the adoption";
            string intro2  = "there are a few things you should know.";
            string intro3  = "As with other animals, dragons need food, water, exercise and sleep.";
            string intro4  = "In addition, however, dragons have an innate need to...vent.";
            string intro5  = "Basically, they must be allowed to wreak devestation.";
            string intro6  = "Fire and teeth and claws and all that.";
            string intro7  = "Make sure you have a proper wilderness on loan where you can";
            string intro8  = "bring your dragon for this purpose!";
            string intro9  = "It's truly a dreadful thing when our customers try";
            string intro10 = "to keep their dragons pent up.";
            string intro11 = "Truly dreadful. You can't imagine the ... well, enough of that.";

            //print centered intro text
            aPet.PrintCenter(intro);
            aPet.PrintCenter(intro1);
            aPet.PrintCenter(intro2);
            Console.WriteLine();
            aPet.PrintCenter(intro3);
            aPet.PrintCenter(intro4);
            aPet.PrintCenter(intro5);
            aPet.PrintCenter(intro6);
            aPet.PrintCenter(intro7);
            aPet.PrintCenter(intro8);
            Console.WriteLine();
            aPet.PrintCenter(intro9);
            aPet.PrintCenter(intro10);
            aPet.PrintCenter(intro11);

            Console.WriteLine("\r\n\r\n\r\nPress any key to continue");
            Console.ReadKey();
            Console.Clear();

            //guideline text
            string guide  = "Just some general things to keep an eye out for:";
            string guide1 = "Your dragon will let you know what he needs.";
            string guide2 = "When he needs something, his levels will rise.";
            string guide3 = "Just make sure you don't let them rise above 25!";
            string guide4 = "You might not like the consequences...";
            string guide5 = "When his needs are met, his levels will sit around 0.";
            string guide6 = "Another word of warning, don't try to push him past what he needs.";
            string guide7 = "If they enter the negatives, beware!";

            //print centered guideline text
            Console.WriteLine();
            aPet.PrintCenter(guide);
            Console.WriteLine();
            aPet.PrintCenter(guide1);
            Console.WriteLine();
            aPet.PrintCenter(guide2);
            aPet.PrintCenter(guide3);
            aPet.PrintCenter(guide4);
            Console.WriteLine();
            aPet.PrintCenter(guide5);
            aPet.PrintCenter(guide6);
            aPet.PrintCenter(guide7);

            Console.WriteLine("\r\n\r\n\r\n\r\nPress any key to continue");
            Console.ReadKey();
            Console.Clear();

            //outro text leading to game
            string last  = "Okay, do you want to continue with the adoption?";
            string last1 = "Oh, good. We weren't going to let you escape, anyways!";
            string last2 = "There are so few willing to adopt dragons these days...";
            string last3 = "Well, on to the final question before we send you on your way!";
            string last4 = "What would you like to name your dragon?";

            //print centered outro text
            aPet.PrintCenter(last);
            Console.ReadLine(); //give user chance to "enter" answer, even though it doesn't matter
            Console.WriteLine();
            aPet.PrintCenter(last1);
            aPet.PrintCenter(last2);
            aPet.PrintCenter(last3);
            Console.WriteLine();

            //Get user to name the pet
            aPet.PrintCenter(last4);
            string petName = Console.ReadLine();

            //Wish user and dragon luck
            string sendOff  = "Best of luck to you and " + petName + ".";
            string sendOff2 = "We hope the two of you enjoy a long and happy relationship!";

            //print centered send-off text
            Console.WriteLine();
            Console.WriteLine();
            aPet.PrintCenter(sendOff);
            aPet.PrintCenter(sendOff2);

            //instantiate a new instance of the pet
            VirtualPet myPet = new VirtualPet(petName);

            //declare variables that will be used in the do/while loop
            string userOption;     //stores which menu option user chooses
            int    selectedOption; //stores which menu option the user chooses as an int after TryParse
            int    ctr = 0;        //will count how many times the loop has run

            //clear screen and enter game
            Console.WriteLine("\r\n\r\n\r\n\r\nPress any key to continue");
            Console.ReadKey();
            Console.Clear();

            do
            {
                //list the alternate scenarios the user will encounter based on the number of times they have cycled through the loop
                if (ctr == 8 || ctr == 34)
                {
                    Console.ReadKey();
                    Console.Clear();
                    myPet.WatchNeighborDragon();

                    Console.WriteLine();
                    Console.WriteLine("\r\nPress any key to continue");
                    Console.ReadKey();
                    Console.WriteLine();
                }

                else if (ctr == 16 || ctr == 44)
                {
                    Console.ReadKey();
                    Console.Clear();
                    myPet.PetRunsAwayScenario();
                }

                else if (ctr == 24 || ctr == 54)
                {
                    Console.ReadKey();
                    Console.Clear();
                    myPet.SickPetScenarioGeneral();
                }

                else
                {
                    //even if there's not any other possible condition, should I have an else statement, even if it's blank?
                }

                //call method that checks to see if stats are too high or two low and respond accordingly
                myPet.StatConsequences();

                //creates space between iteration and also between asking for pet name and stat display
                Console.WriteLine();

                //display updated pet status above the menu
                myPet.MyPetStatus();

                //Menu of options for user actions
                Console.WriteLine();
                Console.WriteLine("Please select an option:");
                Console.WriteLine("1. Feed your dragon 5 head of cattle");
                Console.WriteLine("2. Go to the lake");
                Console.WriteLine("3. Practice flying maneuvers");
                Console.WriteLine("4. Play \"hide the treasure\" (fake treasure of course!)");
                Console.WriteLine("5. Fly to wildlands (here your dragon can vent!)");
                Console.WriteLine("6. Sleep under the stars");
                Console.WriteLine("7. Host a barbeque, courtesy of dragon fire!");
                Console.WriteLine("10. Quit");

                //record user choice
                userOption = Console.ReadLine();

                //Create space between menu and user options
                Console.WriteLine();

                //create a random number generator that will randomly call Tick()
                Random RandomGenerator = new Random();
                int    randomNum       = RandomGenerator.Next(0, 3);

                //Send user to Tick() if their input is invalid
                if (!int.TryParse(userOption, out selectedOption))
                {
                    myPet.Tick(1);

                    Console.WriteLine();
                    Console.WriteLine("Press any key to continue");
                    Console.ReadKey();
                }

                //randomly send user to Tick().
                else if (randomNum == 2)
                {
                    Console.WriteLine();
                    myPet.Tick(selectedOption);

                    Console.WriteLine();
                    Console.WriteLine("Press any key to continue");
                    Console.ReadKey();
                }

                //Filter user input to appropriate menu option
                else if (int.TryParse(userOption, out selectedOption))
                {
                    switch (selectedOption)
                    {
                    //user selects 1 = feed the pet
                    case 1:

                        myPet.FoodDecrease();
                        myPet.FoodDecrease();

                        //other values increase
                        myPet.WaterIncrease();
                        myPet.ExerciseIncrease();
                        myPet.DestructionIncrease();

                        //response to user action
                        Console.WriteLine("Nothing beats a good steak.");
                        break;

                    //user selects 2 = water the pet
                    case 2:

                        myPet.WaterDecrease();

                        //other values increase
                        myPet.DestructionIncrease();

                        //response to user action
                        Console.WriteLine("Your dragon has thoroughly enjoyed your excursion and has replentlished its store of water");
                        break;

                    //user selects 3 = fly pet
                    case 3:

                        myPet.ExerciseDecrease();
                        myPet.ExerciseDecrease();

                        //other values decrease
                        myPet.DestructionDecreaseGeneral();

                        //other values increase
                        myPet.FoodIncrease();
                        myPet.WaterIncrease();
                        myPet.SleepIncrease();

                        //response to user action
                        Console.WriteLine("There's nothing like the feeling of soaring through the sky.");
                        break;

                    //user chooses 4 = play treasure game
                    case 4:

                        myPet.ExerciseDecrease();

                        //other values increase
                        myPet.FoodIncrease();
                        myPet.WaterIncrease();
                        myPet.SleepIncrease();
                        myPet.DestructionIncrease();

                        //response to user action
                        Console.WriteLine("Use that dragon instinct for teasure! \r\n Of course, make sure you stay ahead of him and hide it well. \r\nDragons are remarkably intelligent!");
                        break;

                    //user chooses 5 = wilderness trip
                    case 5:

                        myPet.DestructionDecreaseWilderness();
                        myPet.ExerciseDecrease();
                        myPet.ExerciseDecrease();
                        myPet.ExerciseDecrease();

                        //other values increase
                        myPet.FoodIncrease();
                        myPet.FoodIncrease();
                        myPet.WaterIncrease();
                        myPet.WaterIncrease();
                        myPet.SleepIncrease();
                        myPet.SleepIncrease();

                        //response to user action
                        Console.WriteLine("If you don't have a healthy respect for dragons, you do now!");
                        break;

                    //user chooses 6 = sleep
                    case 6:

                        myPet.SleepDecrease();

                        //other values increase
                        myPet.FoodIncrease();
                        myPet.WaterIncrease();
                        myPet.ExerciseIncrease();
                        myPet.DestructionIncrease();
                        myPet.DestructionIncrease();

                        //response to user action
                        Console.WriteLine("Hopefully where you live the skies are clear. \r\nNothing like a summer evening streaked with shooting stars");
                        break;

                    //user chooses 7 = barbeque
                    case 7:

                        myPet.DestructionDecreaseGeneral();
                        myPet.FoodDecrease();

                        //other values increase
                        myPet.WaterIncrease();
                        myPet.WaterIncrease();
                        myPet.SleepIncrease();

                        //response to user actions
                        Console.WriteLine("Remember the days when barbeques used to be a lot of work? \r\n Gone forever! \r\n\r\nLife is good.");
                        break;

                    //user chooses 10 = quit
                    case 10:

                        Console.WriteLine("It was lovely to meet you. " + petName + " will greatly miss you. We hope you will return soon!");
                        break;

                    default:

                        Console.WriteLine("Invalid option selected.");
                        break;
                    }

                    //pauses screen after response to user, and they have to push a key to keep going
                    Console.WriteLine();
                    Console.WriteLine("Press any key to continue");
                    Console.ReadKey();
                } // is the ending of the else if statement that the program runs if tick isn't called.

                else
                {
                }      // need an empty else statement to end the conditionals if don't have anything to put in it?

                ctr++; // keep track of how many times the loop has cyled through.

                //create space between each iteration for readability
                Console.WriteLine();
            } while (selectedOption != 10);
        }