2015-12-28 149 views
0

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

#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'); 
} 
+0

当'playerChoice'不是'1','2'或'3'时会发生什么?如果你没有'else'语句来处理这种情况? –

+0

这就是我想要做的,但他说要使用一个循环,只是不断重复cout语句“为剪刀输入1 ...”,并不断从这里查看if/else语句。 – frodo12311

+0

@ frodo12311查看下面的答案。 – ChrisD

回答

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; 
} 
+0

谢谢你,工作很棒。 – frodo12311