Как я могу заставить свой код обнаруживать, что я нажимаю клавишу ввода? Я пытался использовать cin.get()
безуспешно. Также, когда нажата клавиша ввода, я хотел бы изменить логическое значение x с истинного на ложное.
Почему это не работает?
if (cin.get() == '\n'){
x = false;
}
Я хотел бы завершить свой цикл (и, следовательно, и программу), когда нажата клавиша ввода (см. код ниже)
Весь код (простой камень, бумага, ножницы):
#include <iostream>
#include <string>
#include <cstdlib> //random
#include <time.h> //pc time
using namespace std;
int main()
{
string rpsYou;
string rpsCom;
string winner;
bool status = true;
while (status){
cout << "Welcome to Rock, Scissors, Paper!\nYou'll have to compete against the computer."
" Please enter 'Rock', 'Paper' or 'Scissors' here: ";
cin >> rpsYou;
//Random number
srand (time(NULL));
int randomNum = rand() % 4; // -> (rand()%(max-min))+min;
//Computers guess
if (randomNum ==1){
rpsCom = "Rock";
}
else if (randomNum ==2){
rpsCom = "Paper";
}
else {
rpsCom = "Scissors";
}
//First letter to capital
rpsYou[0] = toupper(rpsYou[0]);
if (rpsYou == "Rock" || rpsYou == "Paper" || rpsYou == "Scissors"){
cout << "You: " << rpsYou << "\nComputer: " << rpsCom << "\n";
}
else {
cout << "ERROR: Please enter 'Rock', 'Paper' or 'Scissors'.";
}
if ( (rpsYou == "Rock" && rpsCom == "Rock") ||
(rpsYou == "Paper" && rpsCom == "Paper") ||
(rpsYou == "Scissors" && rpsCom == "Scissors") ){
cout << "Tie :|";
}
else if( (rpsYou =="Rock" && rpsCom =="Scissors") ||
(rpsYou =="Paper" && rpsCom =="Rock") ||
(rpsYou =="Scissors" && rpsCom =="Paper")){
cout << "Congratulations! You won! :)";
}
else{
cout << "Oh no! You lost! :(";
}
}
return 0;
}
cin >> rpsYou;
наgetline(cin, rpsYou);
в своемwhile loop
и добавитьif (input == "") {status=false;}
после получения ввода пользователя. (т.е. добавьте операторelse if
над этой строкой:else {cout << "ERROR: Please enter 'Rock', 'Paper' or 'Scissors'.";}
) 12.10.2014