Я пытаюсь написать эту программу «камень, бумага, ножницы» в рамках этого упражнения, в котором выбор компьютера является случайным, и пользователь получает возможность ввести число от 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;
Пожалуйста, помогите!