You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ Hangman游戏项目代码调试:解决重复提示与计数错误

Hangman游戏问题修复

原代码核心问题

  • 错误逻辑混乱:每次猜测时,遍历单词的每个字符,只要当前字符不匹配就打印"Try again"并增加错误计数,导致一次猜测会重复触发多次错误提示,计数直接飙高。正确逻辑应该是整个单词里都没找到猜的字母,才算一次错误,只提示一次,计数加1。
  • 正确提示重复:如果单词里有多个相同字母被猜中,会多次打印"Correct Guess!",体验不好。
  • 初始化冗余:用循环插入星号的方式初始化答案字符串,没必要,直接用构造函数就行。
  • 循环条件错了:允许6次错误,循环应该在错误次数小于6时继续,原代码写的<7会允许7次错误。
  • 结束提示不分胜负:不管玩家赢没赢,都打印一样的"Game over",不合理。

修正后的代码

#include <iostream>
#include <string>

using namespace std;

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

    int length = hidden.length();
    string answer(length, '*'); // 简化初始化

    do {
        cout << "The Word is: " << answer << endl;
        cout << "What is your guess: ";
        cin >> guess;
        
        bool found = false; // 标记本次猜测是否找到匹配字母
        for (int i = 0; i < length; i++) {
            if (guess == hidden[i]) {
                answer[i] = guess;
                found = true; // 只要找到一个匹配,标记为正确
            }
        }
        
        // 统一处理提示和计数
        if (found) {
            cout << "Correct Guess!" << endl;
        } else {
            cout << "Try again!" << endl;
            counter++;
        }
        
        if (answer == hidden) {
            cout << "You have guessed the word!" << endl;
            break;
        }
    } while (counter < 6); // 最多6次错误
    
    // 区分胜负提示
    if (answer != hidden) {
        cout << "Game over! You've used all 6 guesses. The word was: " << hidden << endl;
    }
    return 0;
}

关键修改说明

  1. 新增found标记:用来记录本次猜测是否在目标单词中找到匹配,避免遍历每个字符时重复触发提示和计数。
  2. 分离逻辑:内层循环只负责更新答案字符串,提示和计数放在循环结束后统一处理,确保一次猜测只触发一次提示。
  3. 简化初始化:用string answer(length, '*')直接生成对应长度的星号字符串,替代繁琐的循环插入。
  4. 修正循环条件:将counter <7改为counter <6,严格限制6次错误机会。
  5. 胜负区分提示:游戏结束时,根据玩家是否猜中单词,分别显示胜利或失败信息,明确结果。

内容的提问来源于stack exchange,提问作者fabiocattolico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:47:08