我正在开发一个刽子手游戏,其中错误的字母猜测存储在名为wrongletters
的字符数组中。当然,用户以零错误表开始游戏,因此wrongletters
数组在声明时保持为空。我遇到的问题是,当我尝试显示错误的字母时,由于数组中所有其他非值元素,字母间隔很远
预期:(猜错的信件:A B C D)
当前:(猜测字母:(额外空格)A B C D)
有什么想法? (我知道游戏还没有正常运行):
void gameSequence() // Runs the hangman game loop
{
// Local and Global Variable Declaration and Initialization
char guessLetter = ' ';
guessWord = strToUpper(getNextWord());
string maskedWord(guessWord.size(), '_');
char wrongLetters[26] = {};
int numWrongLetters = sizeof(wrongLetters) / sizeof(wrongLetters[0]);
// Input, Process, and Output
cout << "\nLet's PLAY\n\n";
for (int i = 0; i < maskedWord.length(); i++)
cout << maskedWord[i] << " ";
while (incorrectCount < 6)
{
drawHangman(incorrectCount);
cout << "<<<<<<<<<< MAKE A GUESS >>>>>>>>>>\n\n";
cout << "Guessed Letters: ";
for (int i = 0; i < 26; i++)
cout << wrongLetters[i] << " ";
cout << "\n\nEnter a letter to guess: ";
cin >> guessLetter;
cout << endl;
guessLetter = toupper(guessLetter);
for (int i = 0; i < maskedWord.length(); i++)
cout << maskedWord[i] << " ";
if (guessWord.find(guessLetter) != string::npos)
{
for (int i = 0; i < maskedWord.length(); i++)
{
if (maskedWord[i] == guessLetter)
maskedWord[i] = guessLetter;
}
}
else
{
incorrectCount++;
wrongLetters[incorrectCount] = guessLetter;
bubbleSort(wrongLetters, numWrongLetters);
}
if (incorrectCount == 6)
{
drawHangman(incorrectCount);
cout << "Sorry you lose - the word was: " << guessWord << endl << endl;
}
}
incorrectCount = 0;
}
答案 0 :(得分:0)
据我所知,数组wrongletters
在开头包含了迄今为止猜错的字母。因此,没有任何打印点,特别是对所有这些进行排序。
因此你应该改变:
for (int i = 0; i < incorrectCount; i++) // incorrectCount replaced 26
cout << wrongLetters[i] << " ";
...
else
{
incorrectCount++;
wrongLetters[incorrectCount] = guessLetter;
bubbleSort(wrongLetters, incorrectCount+1); // incorrectCount replaced numWrongLetters
}
否则,当您对所有数组进行排序时,空格会先写入错误的字母之前。
答案 1 :(得分:-1)
因为即使您的char序列为空,您也要求在循环中在wrongLetters [i]之后显示空格。替换&#39; &#39;通过endl你将有
一个
乙
ç
d