开发者

How do I prevent continuation of the program if player inputs invalid selection?

开发者 https://www.devze.com 2023-03-31 17:12 出处:网络
I created a text-based game to help improve my C++ skills since I am very new to it. I\'m trying to learn the basics n\' all.

I created a text-based game to help improve my C++ skills since I am very new to it. I'm trying to learn the basics n' all.

Here is the program. In the switch statement, if a person were to select "3" it would broadcast an Error saying you can only select "1" or "2". ** The issue is the program continues and doesn't make the person RECHOOSE the selection. It goes right to Difficulty selecting.

What method do I use to force the program to halt until player chooses valid selection?

Thanks!

#include <iostream>
using namespace std;

int main()
{
cout << "\tWelcome to my text based game!\n";
char userName[100];
cout << "\nPlease enter your username: ";
cin >> userName;
cout << "Hello, " << userName << "!\n\n";

cout << "Please pick your race: \n";
cout << "1 - Human\n";
cout << "2 - Orc\n";
int pickRace;
cout << "Pick your race: ";
cin >> pickRace;

switch (pickRace)
{
    case 1:
        cout << "You picked the Human race." << endl;
        break;
    case 2:
        cout << "You picked the Orc race." << endl;
        break;
    default:
        cout << "Error - Invalid input; only 1 or 2 allowed!" << endl;
}

int difficulty;
cout <开发者_StackOverflow社区< "\nPick your level difficulty: \n";
cout << "1 - Easy\n";
cout << "2 - Medium\n";
cout << "3 - Hard\n";

cout << "Pick your level difficulty: ";
cin >> difficulty;

switch (difficulty)
{
    case 1:
        cout << "You picked Easy" << endl;
        break;
    case 2:
        cout << "You picked Medium" << endl;
        break;
    case 3:
        cout << "You picked Hard" << endl;
        break;
    default:
        cout << "Error - Invalid input, only 1,2 or 3 are allowed" << endl;
}

return 0;

}


You need to use loops. Wrap the input and the switch after it in a loop and break out of it when the input is valid.


Use a do ... while loop, like this

int pickRace;
do
{
  cout << "Please pick your race: \n";
  cout << "1 - Human\n";
  cout << "2 - Orc\n";
  cout << "Pick your race: ";
  cin >> pickRace;
  switch (pickRace)
  {
    case 1:
      cout << "You picked the Human race." << endl;
      break;
    case 2:
      cout << "You picked the Orc race." << endl;
      break;
    default:
      cout << "Error - Invalid input; only 1 or 2 allowed!" << endl;
      break;
  }
}
while (pickRace != 1 && pickRace !=2);

This will keep on looping while the condition at the bottom is true (i.e. while they haven't picked a valid option).

One other comment. Since you are new you should really get into the habit of using string not char arrays. Char arrays will get you into all sorts of trouble in the future, so start using strings now. There's no point in learning bad habits.

#include <string>

string userName;
cout << "\nPlease enter your username: ";
cin >> userName;
cout << "Hello, " << userName << "!\n\n";


You can do - while loop with flags. The flag is by default false therefore allowing only one time input. If there is a need to enter another time, determined and controlled by the default case, then the flag is set to true, which makes the loop iterate once more. At the beginning of each iteration flag is reset to false, so each time it is assumed that this is the last one. Using flag will make the breaking operation much simple, and avoid complex while conditions.

int flag = 0;

do
{

  cout << "Please pick your race: \n";
  cout << "1 - Human\n";
  cout << "2 - Orc\n";
  cout << "Enter Choice: ";
  cin >> pickRace;

  flag = 0;
  switch (pickRace)
  {
      case 1:
          cout << "You picked the Human race." << endl;
          break;
      case 2:
          cout << "You picked the Orc race." << endl;
          break;
      default:
          cout << "Error - Invalid input; only 1 or 2 allowed!" << endl;
          flag = 1;
  }
} while (flag);
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号