C++ 读取字符输入和使用循环计数器时出现问题
好吧,我这里有一个大问题,在花了两天时间讨论这个问题之后,我不知道为什么它不能像我认为的那样工作 第一个问题:我有一个函数,通过输入y或n来查看玩家是否希望再次玩。如果他们按n键,它会终止,但如果他们按Y键或Y键,它只会再次询问他们是否想再次播放,直到按下除Y之外的任何其他字符为止 我的第二个问题,也是最烦人的,是循环计数器,我用它来确定他们作为猜测输入的字符是否在单词(刽子手游戏)中使用。在我做了一些小的修改之后,它以前工作过,现在不再像预期的那样工作了,问题是我根本没有弄乱代码,它在别处。本质上,每次循环遇到单词中的用户猜测时,循环计数器都会重置为0,但如果计数器等于单词的长度,则表示未找到用户猜测,并且应将显示值设置为加1。但是,它现在所做的一切就是始终保持在零,即使用户输入了错误的猜测(这将使显示值增加1),它仍然保持在零。我花了两天的时间试图让这部分正常工作,它昨天正常工作,但今天不行,我可以用另一双眼睛来观察它,看我是否忽略了什么C++ 读取字符输入和使用循环计数器时出现问题,c++,char,project,user-input,loop-counter,C++,Char,Project,User Input,Loop Counter,好吧,我这里有一个大问题,在花了两天时间讨论这个问题之后,我不知道为什么它不能像我认为的那样工作 第一个问题:我有一个函数,通过输入y或n来查看玩家是否希望再次玩。如果他们按n键,它会终止,但如果他们按Y键或Y键,它只会再次询问他们是否想再次播放,直到按下除Y之外的任何其他字符为止 我的第二个问题,也是最烦人的,是循环计数器,我用它来确定他们作为猜测输入的字符是否在单词(刽子手游戏)中使用。在我做了一些小的修改之后,它以前工作过,现在不再像预期的那样工作了,问题是我根本没有弄乱代码,它在别处。本
void playHangman(string wordArray[], bool usedWords[])
{
string secretWord;
unsigned seed = time(0);
srand(seed);
int wordChoice = (rand()%20);
int counter = 0;
int display = 0;
bool winner = false;
int wordLength = secretWord.length();
int count;
char again;
do
{
while(usedWords[wordChoice])
{
if(wordChoice == 19)
wordChoice = 0;
else if(counter == 20)
{
for(int i = 0; i < SIZE; i++)
usedWords[i] = false;
wordChoice = (rand()%20);
counter = 0;
}
wordChoice++;
counter++;
}
secretWord = wordArray[wordChoice];
const char *word = new char [secretWord.length()];
word = secretWord.c_str();
char *userPrompt = new char [secretWord.length()];
for(int i = 0; i < secretWord.length(); i++)
userPrompt[i] = '_';
userPrompt[secretWord.length()] = '\0';
char userGuess = '\n';
while(!winner)
{
count = 0;
for(int i = 0; i < secretWord.length(); i++)
cout << userPrompt[i] << " ";
cout << "\n" << endl;
displayGallows(display);
if(display == 6)
{
cout << "Sorry, you lost!" << endl;
break;
}
cout << "Enter a letter: ";
cin >> userGuess;
cin.ignore();
for(int i = 0; i < secretWord.length(); i++)
{
if(word[i] == userGuess)
{
userPrompt[i] = userGuess;
count = 0;
}
else if(count == (wordLength - 1))
display++;
count++;
}
winner = checkWin(word, userPrompt, display, secretWord);
}
again = playAgain();
}while(again == 'Y' || again =='y');
}
char playAgain()
{
char playAgain;
cout << "Would you like to play again? Enter y or n: ";
cin >> playAgain;
return playAgain;
}
void playHangman(字符串单词数组[],布尔使用的单词[])
{
字符串密文;
无符号种子=时间(0);
srand(种子);
int wordChoice=(rand()%20);
int计数器=0;
int显示=0;
bool-winner=false;
int-wordLength=secretWord.length();
整数计数;
再次烧焦;
做
{
while(使用单词[wordChoice])
{
if(wordChoice==19)
wordChoice=0;
否则如果(计数器==20)
{
对于(int i=0;i cout请求再次播放可能是因为没有重置变量“winner”。按以下操作可能会更正它
do
{
winner = false; //set to false at each iteration
while(usedWords[wordChoice])
{
if(wordChoice == 19)
wordChoice = 0;
else if(counter == 20)
要求再次播放可能是因为没有重置变量“winner”。执行以下操作可能会更正它
do
{
winner = false; //set to false at each iteration
while(usedWords[wordChoice])
{
if(wordChoice == 19)
wordChoice = 0;
else if(counter == 20)
要求再次播放可能是因为没有重置变量“winner”。执行以下操作可能会更正它
do
{
winner = false; //set to false at each iteration
while(usedWords[wordChoice])
{
if(wordChoice == 19)
wordChoice = 0;
else if(counter == 20)
要求再次播放可能是因为没有重置变量“winner”。执行以下操作可能会更正它
do
{
winner = false; //set to false at each iteration
while(usedWords[wordChoice])
{
if(wordChoice == 19)
wordChoice = 0;
else if(counter == 20)
实际上有两个问题:
为什么不重新启动游戏?回答:因为程序认为游戏已经成功玩了。你在循环前面设置变量,而不是重置它们来玩另一个游戏。建议:创建一个实际玩游戏的函数,然后从外循环调用它。在该函数中玩游戏
为什么它不增加计数呢?不知道。为什么你认为计数总是保持在0?然而,似乎条件是计数=(字长-1)
不太可能成为真值
,因为字长
设置为secretWord
的大小,而secretWord
恰好为空(即字长
设置为0
),并且此后从未更改
实际上有两个问题:
真值
,因为字长
设置为secretWord
的大小,而secretWord
恰好为空(即字长
设置为0
),并且此后从未更改实际上有两个问题:
真值
,因为字长
设置为secretWord
的大小,而secretWord
恰好为空(即字长
设置为0
),并且此后从未更改实际上有两个问题: