Hangman School项目代码调试C++

问题描述 投票:0回答:1

我正在尝试编写一个简单的刽子手游戏。我试图让程序运行直到有人猜出这个词,但只给他们 6 次打击。所以基本上,只有当人们猜到字符串中不存在的字母时,计数器才会递增。我还希望当人们弄错时它显示“再试一次”。

由于某种原因,它没有按照我想要的方式工作。它多次打印“重试”,而不是一次,而且我无法正确地了解计数器情况。

#include <iostream>
#include <string>

using namespace std;

int main(){
    string hidden;
    string answer;
    char guess;
    int counter = 0;
    cout << "Give me a word (5-15 chars): ";
    cin >> hidden;

    int length = hidden.length();

    for (int i = 0; i < length; i++)
        answer.insert(i,"*");

    do {
        cout << "The Word is: " << answer << endl;
        cout << "What is your guess: ";
        cin >> guess;
        
        for (int i = 0; i < hidden.length(); i++) {
            if (guess == hidden[i]) {
                answer[i] = guess;
                cout << "Correct Guess!" << endl;
            }
            else {
                cout << "Try again!";
                counter++;
            }
        }
        
        if (answer == hidden) {
            cout << "You have guessed the word!";
            break;
        }
    } while (counter < 7);
    
    cout << "Game over: >>" << answer << "<<";
}
c++ arrays string loops
1个回答
0
投票

这里是如何做到这一点

    bool any_right = false;
    for (int i = 0; i < hidden.length(); i++) {
        if (guess == hidden[i]) {
            any_right = true;
            answer[i] = guess;
        }
    }
    if (any_right) {
        cout << "Correct Guess!" << endl;
    }
    else {
       cout << "Try again!";
       counter++;
    }
© www.soinside.com 2019 - 2024. All rights reserved.