Я работаю над проектом палача для моего финала в моем классе C++. В моей игре палача до тех пор, пока игрок продолжает получать правильные буквы, они будут продолжать свою работу бесконечно, пока не получите слово. Кроме того, чтобы избежать повторения одной и той же буквы, я включил цикл, и массив bool, который будет установлен в true, когда выбрана буква. Моя проблема заключается в том, что я пытаюсь сделать эту игру как можно более глупым, и я, когда пытаюсь ввести несколько символов, программа будет проходить через первые несколько символов и игнорировать остальные. Получив эту проблему, я решил сделать так, чтобы пользователь мог вводить только один символ за раз, и если они будут введены, они будут проигнорированы. Поэтому мне было интересно, есть ли способ сделать это, чтобы программа принимала только один символ от пользователя за раз.Игнорирование символов в C++
Вот упрощенная версия того, что один поворот из моей программы выглядит
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>
using namespace std;
int main{
char choword []='hello'
char alpha[26] = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
int counter=0;
int tries=6;
bool rightw;
bool usedw;
bool gamew;
bool gameo;
bool lguess
char ch;
bool conturn=true;
gameo=false;
gamew=false;
bool conturn=true;
tries=6;
const unsigned int leng=strlen(choword);
bool* rightw= new bool[leng];
for (unsigned int index =0;index<leng;index++){
rightw[index]=false;
cout<<lright[index];
}
bool* usedw= new bool[26];
for(int counter11=0;counter11<26;counter11++){
usedw[counter11]=false;
}
while(conturn==ture){
lguess=false;
for(unsigned int index2=0;index2<leng;++index2){
if(rightw[index2]==true){
cout<<choword[index2];
}
else{
cout<<"*";
}
}
cout<<"\n";
for(int counter=0;counter<26;counter++){
if(usedw[counter]==true){
cout<<alpha[counter];
}
}
cout<<"\n";
cout<<"Pick a letter and guess the word player."<<endl;
cout<<"Please only select one letter at a time"<<endl;
cin>>ch;
ch=tolower(ch);
while(ch<97||ch>122){
cout<<"You used the wrong type of character try again."<<endl;
cin>>ch;
ch=tolower(ch);
}
while(counter<26){
if(ch==alpha[counter]&&usedw[counter]==false){
usedw[counter]=true;
break;
}
if(ch==alpha[counter]&&usedw[counter]==true){
cout<<"This letter has alread been used please enter another letter"<<endl;
cin>>ch;
while(ch<97||ch>122){
cout<<"You used the wrong type of character try again."<<endl;
cin>>ch;
ch=tolower(ch);
}
counter=0;
}
else{
counter=counter+1;
}
}
counter=0;
for (unsigned int index3=0;index3<leng;++index3){
if (ch==choword[index3]){
rightw[index3]=true;
lguess=true;
winning=winning+1;
}
}
if (lguess==false){
tries=tries-1;
vonturn=false;
}
lguess=false;
if (winning==strlen(choword)){
onaroll=false;
}
}
}
иметь в виду, что это только до до конца поворота материала первого игрока, как удаление динамических массивов в моей основной программа.
Я забыл упомянуть, что я вроде еще новичок, как бы я справиться с ошибкой – user2340686
I добавили способ обработать ошибку на мой ответ. Я надеюсь, что это достаточно ясно, и это помогает вам. – Paul92