C ++ Beginner: проблемы с циклами - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь написать эту программу «камень, бумага, ножницы» в рамках этого упражнения, в котором выбор компьютера является случайным, и пользователь получает возможность ввести число от 1 до 3. Я хотел продолжать играть до определенного количества раз c, поэтому подумал об использовании циклов for. Единственная проблема заключается в том, что l oop продолжает работать, не предлагая пользователю ввести другой номер, даже с добавленной строкой cin.

  //1 = Rock | 2 = Paper | 3 = Scissors

if (user >= 1 && user <= 3){
for (int i=0; i < 3; i++){
if (computer == user ){
  std::cout << "It's a tie!\n";
  user = 0;
  std::cin >> user;
}
else if (computer == 1 && user == 2){
  std::cout << "You win!\n";
  user_score += 1;
  user = 0;
  std::cin >> user;
}
else if ((computer == 1 && user ==3) || (computer == 2 && user == 1)  ){
  std::cout << "You lose.\n";
  comp_score += 1;
  user = 0;
  std::cin >> user;
}

std::cout << "Your score: " << user_score << "\n";
std::cout << "Computer score: " << comp_score << "\n";
}

std::cout << "\nGame over.\n";
if (comp_score > user_score){
  std::cout << "Computer wins.\n";
}
else if (comp_score < user_score){
  std::cout << "You win!\n";
}
else{ 
  std::cout << "It's a tie\n";
}
}

else {
  std::cout << "Invalid Input./n";
  return 0;
}

Синтаксических ошибок не возникло, поэтому я предполагаю, что проблема заключается в с логикой c. Я просто не знаю, как перенаправить программу в начало l oop и запросить другой cin. Следующая строка кода также является частью main().

srand(time(NULL));

int computer = rand() % 3 +1;
int user;
int user_score, comp_score;

Пожалуйста, помогите!

...