示例#1
0
        private int DisplayGetIntegerInRange(int min, int max, string prompt)
        {
            int integer = 0;

            bool validNumber = false;

            while (!validNumber)
            {
                ConsoleUtil.DisplayPromptMessage(prompt);
                if (int.TryParse(Console.ReadLine(), out integer))
                {
                    if (integer >= min && integer <= max)
                    {
                        validNumber = true;
                    }
                    else
                    {
                        ConsoleUtil.DisplayMessage($"Input out of range ({min},{max})");
                    }
                }
                else
                {
                    ConsoleUtil.DisplayMessage("Input need to be entered as integers. (1, 2, 3, etc)");
                }
            }

            return(integer);
        }
        /// <summary>
        /// Display a Yes or No prompt with a message
        /// </summary>
        /// <param name="promptMessage">prompt message</param>
        /// <returns>bool where true = yes</returns>
        private bool?DisplayGetYesNoPrompt(string promptMessage)
        {
            bool?  yesNoChoice   = null;
            bool   validResponse = false;
            string userResponse;

            while (!validResponse)
            {
                ConsoleUtil.DisplayReset();

                ConsoleUtil.DisplayPromptMessage(promptMessage + "(yes/no)");
                userResponse = Console.ReadLine();

                if (userResponse.ToUpper() == "YES")
                {
                    validResponse = true;
                    yesNoChoice   = true;
                }
                else if (userResponse.ToUpper() == "NO")
                {
                    validResponse = true;
                    yesNoChoice   = false;
                }
                else
                {
                    ConsoleUtil.DisplayMessage(
                        "It appears that you have entered an incorrect response." +
                        " Please enter either \"yes\" or \"no\"."
                        );
                    DisplayContinuePrompt();
                }
            }

            return(yesNoChoice);
        }
示例#3
0
        /// <summary>
        /// get the id of a treasure to add to inventory
        /// </summary>
        /// <returns>id of desired treasure</returns>
        public int DisplayPickUpTreasure()
        {
            ConsoleUtil.HeaderText = "Pick Up Treasure";
            ConsoleUtil.DisplayReset();

            int treasureID = 0;

            int locationID;

            locationID = _gameTraveler.SpaceTimeLocationID;

            List <Treasure> treasuresInCurrentLocation = new List <Treasure>();

            treasuresInCurrentLocation = _gameUniverse.GetTreasuresBySpaceTimeLocationID(locationID);

            ConsoleUtil.DisplayMessage("");
            ConsoleUtil.DisplayMessage("Items in current Location");
            ConsoleUtil.DisplayMessage("");

            DisplayTreasureTable(treasuresInCurrentLocation);

            ConsoleUtil.DisplayPromptMessage("Enter Treasure Number:");
            treasureID = int.Parse(Console.ReadLine()); // TODO validate ID

            DisplayContinuePrompt();

            return(treasureID);
        }
示例#4
0
        /// <summary>
        /// get the id of a treasure to remove from inventory
        /// </summary>
        /// <returns>id of desired treasure</returns>
        public int DisplayPutDownTreasure()
        {
            ConsoleUtil.HeaderText = "Put Down Treasure";
            ConsoleUtil.DisplayReset();

            int treasureID = 0;

            int locationID;

            locationID = _gameTraveler.SpaceTimeLocationID;

            List <Treasure> treasuresInInventory = new List <Treasure>();

            treasuresInInventory = _gameTraveler.TravelersTreasures;

            ConsoleUtil.DisplayMessage("");
            ConsoleUtil.DisplayMessage("Treasures in Your Inventory");
            ConsoleUtil.DisplayMessage("");

            DisplayTreasureTable(treasuresInInventory);

            ConsoleUtil.DisplayPromptMessage("Enter Treasure Number:");
            treasureID = int.Parse(Console.ReadLine()); // TODO validate ID

            DisplayContinuePrompt();

            return(treasureID);
        }
示例#5
0
        /// <summary>
        /// get the id of an item to add to inventory
        /// </summary>
        /// <returns>id of desired item</returns>
        public int DisplayPickUpItem()
        {
            ConsoleUtil.HeaderText = "Pick Up Item";
            ConsoleUtil.DisplayReset();

            int itemID = 0;

            int locationID;

            locationID = _gameTraveler.SpaceTimeLocationID;

            List <Item> itemsInCurrentLocation = new List <Item>();

            itemsInCurrentLocation = _gameUniverse.GetItemtsBySpaceTimeLocationID(locationID);

            ConsoleUtil.DisplayMessage("");
            ConsoleUtil.DisplayMessage("Items in current Location");
            ConsoleUtil.DisplayMessage("");

            DisplayItemTable(itemsInCurrentLocation);

            ConsoleUtil.DisplayPromptMessage("Enter Item Number:");
            itemID = int.Parse(Console.ReadLine()); // TODO validate ID

            DisplayContinuePrompt();

            return(itemID);
        }
示例#6
0
        /// <summary>
        /// get the id of an item to remove from inventory
        /// </summary>
        /// <returns>id of desired item</returns>
        public int DisplayPutDownItem()
        {
            ConsoleUtil.HeaderText = "Put Down Item";
            ConsoleUtil.DisplayReset();

            int itemID = 0;

            int locationID;

            locationID = _gameTraveler.SpaceTimeLocationID;

            List <Item> itemsInInventory = new List <Item>();

            itemsInInventory = _gameTraveler.TravelersItems;

            ConsoleUtil.DisplayMessage("");
            ConsoleUtil.DisplayMessage("Items in Your Inventory");
            ConsoleUtil.DisplayMessage("");

            DisplayItemTable(itemsInInventory);

            ConsoleUtil.DisplayPromptMessage("Enter Item Number:");
            itemID = int.Parse(Console.ReadLine()); // TODO validate ID

            DisplayContinuePrompt();

            return(itemID);
        }
示例#7
0
        ///<summary>
        ///display talk to method
        /// </summary>
        public void DisplayTalkTo()
        {
            string travelerTalk;

            ConsoleUtil.HeaderText = "Talk To";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayPromptMessage("Type what you would like to say to the Dalek: ");
            travelerTalk = Console.ReadLine();

            ConsoleUtil.DisplayReset();
            ConsoleUtil.DisplayMessage($"You stated: {travelerTalk} ");
            ConsoleUtil.DisplayMessage("");

            foreach (Dalek dalek in _gameUniverse.GetDaleksBySpaceTimeLocationID(_gameTraveler.SpaceTimeLocationID))
            {
                ConsoleUtil.DisplayMessage($"{dalek.Name} states: {dalek.Message}");
                ConsoleUtil.DisplayMessage("");

                if (dalek.NiceMessage != true)
                {
                    ConsoleUtil.DisplayMessage("You are forced to leave.");
                }
                else
                {
                    ConsoleUtil.DisplayMessage("You feel welcome and are invited for hot cocoa");
                }
            }

            DisplayContinuePrompt();
        }
示例#8
0
        /// <summary>
        /// display information about items and treasures in the current space-time location
        /// </summary>
        public void DisplayLookAt()
        {
            int             currentSptID     = _gameTraveler.SpaceTimeLocationID;
            List <Item>     itemsInSpt       = new List <Item>();
            List <Treasure> treasuresInSpt   = new List <Treasure>();
            Item            itemToLookAt     = new Item();
            Treasure        treasureToLookAt = new Treasure();

            itemsInSpt     = _gameUniverse.GetItemtsBySpaceTimeLocationID(currentSptID);
            treasuresInSpt = _gameUniverse.GetTreasuresBySpaceTimeLocationID(currentSptID);

            ConsoleUtil.HeaderText = "Look at a Game Items in Current Location";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage(_gameUniverse.GetSpaceTimeLocationByID(currentSptID).Name);

            if (itemsInSpt != null)
            {
                ConsoleUtil.DisplayMessage("");
                ConsoleUtil.DisplayMessage("Items in current location.");
                DisplayItemTable(itemsInSpt);

                ConsoleUtil.DisplayPromptMessage(
                    "Enter the item number to view or press the Enter key to move on. "
                    ); // TODO code in validation
                int itemIDChoice;

                if (int.TryParse(Console.ReadLine(), out itemIDChoice))
                {
                    itemToLookAt = _gameUniverse.GetItemtByID(itemIDChoice);
                    ConsoleUtil.DisplayMessage(itemToLookAt.Description);

                    DisplayContinuePrompt();
                }
            }

            if (treasuresInSpt != null)
            {
                ConsoleUtil.DisplayMessage("");
                ConsoleUtil.DisplayMessage("Treasures in current location.");
                DisplayTreasureTable(treasuresInSpt);

                ConsoleUtil.DisplayPromptMessage(
                    "Enter the treasure number to view or press the Enter key to move on. "
                    ); // TODO code in validation
                int treasureIDChoice;

                if (int.TryParse(Console.ReadLine(), out treasureIDChoice))
                {
                    treasureToLookAt = _gameUniverse.GetTreasureByID(treasureIDChoice);
                    ConsoleUtil.DisplayMessage(treasureToLookAt.Description);

                    DisplayContinuePrompt();
                }
            }
        }
示例#9
0
        /// <summary>
        /// get and validate the player's race
        /// </summary>
        /// <returns>race as a RaceType</returns>
        public Traveler.RaceType DisplayGetTravelersRace()
        {
            bool validResponse = false;

            Traveler.RaceType travelersRace = Traveler.RaceType.None;

            while (!validResponse)
            {
                //
                // display header
                //
                ConsoleUtil.HeaderText = "Traveler's Race";
                ConsoleUtil.DisplayReset();

                //
                // display all race types on a line
                //
                ConsoleUtil.DisplayMessage("Races");
                StringBuilder sb = new StringBuilder();
                foreach (Character.RaceType raceType in Enum.GetValues(typeof(Character.RaceType)))
                {
                    if (raceType != Character.RaceType.None)
                    {
                        sb.Append($" [{raceType}] ");
                    }
                }
                ConsoleUtil.DisplayMessage(sb.ToString());

                ConsoleUtil.DisplayPromptMessage("Enter your race: ");

                //
                // validate user response for race
                //
                if (Enum.TryParse <Character.RaceType>(Console.ReadLine(), out travelersRace))
                {
                    validResponse = true;
                    ConsoleUtil.DisplayReset();
                    ConsoleUtil.DisplayMessage($"You have indicated {travelersRace} as your race type.");
                }
                else
                {
                    ConsoleUtil.DisplayMessage("You must limit your race to the list above.");
                    ConsoleUtil.DisplayMessage("Please reenter your race.");
                }

                DisplayContinuePrompt();
            }

            return(travelersRace);
        }
示例#10
0
        /// <summary>
        /// Display an integer prompt with a message including the min/max values
        /// </summary>
        /// <param name="promptMessage">prompt message</param>
        /// <returns>user's choice of integer</returns>
        private int DisplayGetIntegerPrompt(string promptMessage, int minNumber, int maxNumber)
        {
            //
            // dummy choice - refactor later to return a null
            //
            int    intChoice     = -9999;
            bool   validResponse = false;
            string userResponse;

            while (!validResponse)
            {
                ConsoleUtil.DisplayReset();

                ConsoleUtil.DisplayPromptMessage($"{promptMessage} ({minNumber} - {maxNumber}");
                userResponse = Console.ReadLine();

                if (int.TryParse(userResponse, out intChoice))
                {
                    if (intChoice >= maxNumber && intChoice <= maxNumber)
                    {
                        validResponse = true;
                    }
                    else
                    {
                        ConsoleUtil.DisplayMessage(
                            "It appears that you have entered an integer out of range." +
                            $" Please enter an integer between {minNumber} and {maxNumber}."
                            );
                        DisplayContinuePrompt();
                    }
                }
                else
                {
                    ConsoleUtil.DisplayMessage(
                        "It appears that you have not entered an integer." +
                        $" Please enter an integer between {minNumber} and {maxNumber}."
                        );
                    DisplayContinuePrompt();
                }
            }

            return(intChoice);
        }
示例#11
0
        /// <summary>
        /// display information about items and treasures in the current space-time location
        /// </summary>
        public void DisplayTalkTo()
        {
            int          currentSptID = _gameTraveler.SpaceTimeLocationID;
            int          dalekIDChoice;
            List <Dalek> dalecksInSpt  = new List <Dalek>();
            Dalek        dalekToTalkTo = new Dalek();

            dalecksInSpt = _gameUniverse.GetDaleksBySpaceTimeLocationID(currentSptID);

            ConsoleUtil.HeaderText = "Talk to the Daleks in Current Location";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage(_gameUniverse.GetSpaceTimeLocationByID(currentSptID).Name);

            if (dalecksInSpt != null)
            {
                ConsoleUtil.DisplayMessage("");
                ConsoleUtil.DisplayMessage("Daleks in current location.");
                DisplayDalekTable(dalecksInSpt);

                ConsoleUtil.DisplayPromptMessage(
                    "Enter the item number to view or press the Enter key to move on. "
                    ); // TODO code in validation


                if (int.TryParse(Console.ReadLine(), out dalekIDChoice))
                {
                    dalekToTalkTo = _gameUniverse.GetDalekByID(dalekIDChoice);

                    if (dalekToTalkTo.HasMessage)
                    {
                        ConsoleUtil.DisplayMessage(dalekToTalkTo.Message);
                    }
                    else
                    {
                        ConsoleUtil.DisplayMessage($"This Dalek has nothing to say {_gameTraveler.Race}.");
                    }

                    DisplayContinuePrompt();
                }
            }
        }
示例#12
0
        /// <summary>
        /// get player's name
        /// </summary>
        /// <returns>name as a string</returns>
        public string DisplayGetTravelersName()
        {
            string travelersName;

            //
            // display header
            //
            ConsoleUtil.HeaderText = "Traveler's Name";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayPromptMessage("Enter your name: ");
            travelersName = Console.ReadLine();

            ConsoleUtil.DisplayReset();
            ConsoleUtil.DisplayMessage($"You have indicated {travelersName} as your name.");

            DisplayContinuePrompt();

            return(travelersName);
        }
示例#13
0
        /// <summary>
        /// display information about items and treasures in the current space-time location
        /// </summary>
        public Dalek DisplayGetDalekToBattle()
        {
            int          currentSptID = _gameTraveler.SpaceTimeLocationID;
            int          dalekIDChoice;
            List <Dalek> dalecksInSpt  = new List <Dalek>();
            Dalek        dalekToBattle = null;

            dalecksInSpt = _gameUniverse.GetDaleksBySpaceTimeLocationID(currentSptID);

            ConsoleUtil.HeaderText = "Battle Daleks in Current Location";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage(_gameUniverse.GetSpaceTimeLocationByID(currentSptID).Name);

            if (dalecksInSpt != null)
            {
                ConsoleUtil.DisplayMessage("");
                ConsoleUtil.DisplayMessage("Daleks in current location.");
                DisplayDalekTable(dalecksInSpt);

                ConsoleUtil.DisplayPromptMessage(
                    "Enter the item number to view or press the Enter key to move on. "
                    ); // TODO code in validation


                if (int.TryParse(Console.ReadLine(), out dalekIDChoice))
                {
                    dalekToBattle = _gameUniverse.GetDalekByID(dalekIDChoice);

                    DisplayContinuePrompt();
                }
            }
            else
            {
                ConsoleUtil.DisplayMessage("");
                ConsoleUtil.DisplayMessage("It appears there are not Daleks in here to battle.");
            }

            return(dalekToBattle);
        }
示例#14
0
        /// <summary>
        /// get the traveler's BattleAction choice
        /// </summary>
        /// <returns>BattleAction</returns>
        public BattleAction DisplayGetBattleActionChoice()
        {
            BattleAction battleActionChoice = BattleAction.None;

            ConsoleUtil.HeaderText = "Choose a Battle Action";
            ConsoleUtil.DisplayReset();

            ConsoleUtil.DisplayMessage("Enter one of the following actions.");
            ConsoleUtil.DisplayMessage("");
            foreach (BattleAction action in Enum.GetValues(typeof(BattleAction)))
            {
                ConsoleUtil.DisplayMessage(action.ToString());
            }

            ConsoleUtil.DisplayMessage("");
            ConsoleUtil.DisplayPromptMessage("Enter your battle action:");

            // TODO validate
            Enum.TryParse <BattleAction>(Console.ReadLine(), out battleActionChoice);

            DisplayContinuePrompt();

            return(battleActionChoice);
        }
示例#15
0
        /// <summary>
        /// get and validate the player's TARDIS destination
        /// </summary>
        /// <returns>space-time location</returns>
        public SpaceTimeLocation DisplayGetTravelersNewDestination()
        {
            bool validResponse = false;
            int  locationID;
            SpaceTimeLocation nextSpaceTimeLocation = new SpaceTimeLocation();

            while (!validResponse)
            {
                //
                // display header
                //
                ConsoleUtil.HeaderText = "TARDIS Destination";
                ConsoleUtil.DisplayReset();

                //
                // display a table of space-time locations
                //
                DisplayTARDISDestinationsTable();

                //
                // get and validate user's response for a space-time location
                //
                ConsoleUtil.DisplayPromptMessage("Choose the TARDIS destination by entering the ID: ");

                //
                // user's response is an integer
                //
                if (int.TryParse(Console.ReadLine(), out locationID))
                {
                    ConsoleUtil.DisplayMessage("");

                    try
                    {
                        nextSpaceTimeLocation = _gameUniverse.GetSpaceTimeLocationByID(locationID);

                        ConsoleUtil.DisplayReset();
                        ConsoleUtil.DisplayMessage($"You have indicated {nextSpaceTimeLocation.Name} as your TARDIS destination.");
                        ConsoleUtil.DisplayMessage("");

                        if (nextSpaceTimeLocation.Accessable == true)
                        {
                            validResponse = true;
                            ConsoleUtil.DisplayMessage("You will be transported immediately.");
                        }
                        else
                        {
                            ConsoleUtil.DisplayMessage("It appears this destination is not available to you at this time.");
                            ConsoleUtil.DisplayMessage("Please make another choice.");
                        }
                    }
                    //
                    // user's response was not in the correct range
                    //
                    catch (ArgumentOutOfRangeException ex)
                    {
                        ConsoleUtil.DisplayMessage("It appears you entered an invalid location ID.");
                        ConsoleUtil.DisplayMessage(ex.Message);
                        ConsoleUtil.DisplayMessage("Please try again.");
                    }
                }
                //
                // user's response was not an integer
                //
                else
                {
                    ConsoleUtil.DisplayMessage("It appears you did not enter a number for the location ID.");
                    ConsoleUtil.DisplayMessage("Please try again.");
                }

                DisplayContinuePrompt();
            }

            return(nextSpaceTimeLocation);
        }