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

PHP控制台版Hangman游戏错误计数异常问题求助

解决Hangman游戏错误计数异常问题

你的代码核心问题在于:每次用户提交猜测后,会遍历秘密单词的所有字母,每遇到一个不匹配的字母就给$playerErrors加1。比如秘密单词有5个字母,一次错误猜测会触发5次else分支,直接让错误数+5,导致玩家很快达到失败阈值。

修正后的代码

<?php
$playerErrors = 0;
// 假设这里已经初始化了$secretArray(秘密单词拆成的数组)和$displayedLetters(初始全为_的数组)
$shwWord = implode(' ', $displayedLetters);

while ($playerErrors < 6) { 

    if (strpos($shwWord, '_') === false){
        echo "You won! Congratulations!\n";
        break;
    }  

    $guess = readline('Guess a letter: ');
    $correctGuess = false; // 标记本次猜测是否命中

    for ($g = 0; $g < count($secretArray); $g+=1) {
        if ($guess === $secretArray[$g]){
            $displayedLetters[$g] = $guess;
            $correctGuess = true; // 命中字母,标记为正确猜测
        }
    }

    // 只有当本次猜测完全没命中时,才增加错误数
    if (!$correctGuess) {
        $playerErrors += 1;
        echo "Errors: " . $playerErrors . "\n";
    }

    $shwWord = implode(' ', $displayedLetters);
    echo "\n $shwWord \n\n";
}

if ($playerErrors >= 6) {
    echo "you lost" . PHP_EOL;
}
?>

关键改动说明

  1. 新增$correctGuess变量,用来跟踪本次猜测是否命中秘密单词中的任何字母
  2. 移除循环内的错误计数逻辑,只在循环结束后判断:如果$correctGuess仍为false,说明这次猜测完全错误,才给$playerErrors加1
  3. 确保一次错误猜测只会增加1次错误数,符合Hangman游戏的规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:06:29