C ++嵌套验证循环

时间:2015-12-28 22:58:17

标签: c++

我的老师希望我在玩家的选择中放置一个嵌套的验证循环。这将保持循环,直到它们输入有效输入(1,2或3)。"我无法获得任何工作可以得到一些指示,请和谢谢。

#include <iostream>
#include <ctime>
#include <string>
using namespace std;

// Keaton Graffis 12/28/2015

int main()
{
    int seed = time(0);
    srand(seed);
    char playAgain;
    int playerChoice, aiChoice, win = 0, tie = 0, lose = 0;
    do
    {
        cout << "Lets play a game of rock paper scissors.\n";
        cout << "Enter a 1 for sccisors a 2 for rock or a 3 for paper: ";

        // Generates outcomes of the players choice
        cin >> playerChoice;
        if (playerChoice == 1)
        {
            cout << "You picked Rock!\n";
        }
        else if (playerChoice == 2)
        {
            cout << "You picked Paper!\n";
        }
        else if (playerChoice == 3)
        {
            cout << "You picked Scissors!\n";
        }

        // gentrate the computers choices
        int aiChoice = rand() % 3 + 1;

        if (aiChoice == 1)
        {
            cout << "The computer chose Rock!\n";
        }

        else if (aiChoice == 2)
        {
            cout << "The computer chose Paper!\n";
        }
        else if (aiChoice == 3)
        {
            cout << "The computer chose Scissors!\n";
        }

        // Determines wins, ties and loses
        if (playerChoice == 1 && aiChoice == 1) {
            cout << "Rock meets Rock its a tie!" << endl;
            tie++;
        }
        else if (playerChoice == 1 && aiChoice == 2)
        {
            cout << "Rock is covered by Paper the computer wins!." << endl;
            lose++;
        }
        else if (playerChoice == 1 && aiChoice == 3)
        {
            cout << "Rock crushes Scissors you win!" << endl;
            win++;
        }
        else if (playerChoice == 2 && aiChoice == 1)
        {
            cout << "Paper covers Rock you win!" << endl;
            win++;
        }
        else if (playerChoice == 2 && aiChoice == 2)
        {
            cout << "Paper meets Paper its a tie!" << endl;
            tie++;
        }
        else if (playerChoice == 2 && aiChoice == 3)
        {
            cout << "Paper is cut by Scissors the computer wins!" << endl;
            lose++;
        }
        else if (playerChoice == 3 && aiChoice == 1)
        {
            cout << "Scissors are crushed by Rock computer wins!" << endl;
            lose++;
        }
        else if (playerChoice == 3 && aiChoice == 2)
        {
            cout << "Scissors cuts Paper you win!" << endl;
            win++;
        }
        else if (playerChoice == 3 && aiChoice == 3)
        {
            cout << "Scissors meet Scissors its a tie!" << endl;
            tie++;
        }

        // Outputs wins, ties and loses 
        cout << "Wins: " << win << endl;
        cout << "Ties:" << tie << endl;
        cout << "Losses:" << lose << endl;
        cout << "Would you like to play again? Y/N" << endl;
        cin >> playAgain;
        system("CLS");
        // Allow user to play again
    } while (playAgain == 'Y' || playAgain == 'y');
}

1 个答案:

答案 0 :(得分:0)

您可以在读取输入的代码块上抛出while循环,并在收到有效输入时从循环中断。

int choice;
bool valid = false;

while(!valid) {
    cout << "Enter a 1 for scissors, 2 for rock, 3 for paper" << endl;
    cin >> choice;
    if(choice == 1 || choice == 2 || choice == 3) 
        valid = true;
}