字符数组格式

时间:2016-07-20 19:44:49

标签: c++ arrays

我正在开发一个刽子手游戏,其中错误的字母猜测存储在名为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;
}

2 个答案:

答案 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