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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
///<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(); }
/// <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(); } } }
/// <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); }
/// <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); }
/// <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(); } } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }