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

Odin项目:JS控制台石头剪刀布game函数循环异常求助

解决石头剪刀布游戏game()函数循环异常问题

原代码的核心问题

  1. game()未循环执行:原函数仅用if判断一次,只运行一轮,无法持续到一方得5分
  2. 电脑选择未更新:全局的computerSelection仅初始化一次,每轮都用同一个选择,失去随机性
  3. 重复弹窗:全局提前调用了prompt,game函数内又调用一次,导致两次输入请求
  4. 未显示每轮结果:playRound返回的结果没有打印,无法看到每轮战况

修复后的完整代码

let playerScore = 0;
let computerScore = 0;

function computerPlay() {
    let choices = ['rock', 'paper', 'scissors']
    return choices[Math.floor(Math.random() * choices.length)]
}

function playRound(playerSelection, computerSelection){
    if ((playerSelection === "rock" && computerSelection === "scissors") ||
       (playerSelection === "scissors" && computerSelection === "paper") ||
       (playerSelection === "paper" && computerSelection === "rock")){
        playerScore++;
        return `你赢了! ${playerSelection} 击败 ${computerSelection}, 比分: 玩家 ${playerScore} - 电脑 ${computerScore}`;
       } else if (playerSelection === computerSelection){
        return `平局! 双方都选了${playerSelection}, 比分不变: 玩家 ${playerScore} - 电脑 ${computerScore}`;
       } else {
        computerScore++
        return `你输了! ${computerSelection} 击败 ${playerSelection}, 比分: 玩家 ${playerScore} - 电脑 ${computerScore}`;
       }
}

function game(){
    // 循环对战直到一方得分达到5
    while (playerScore < 5 && computerScore < 5) {
        const playerSelection = prompt("请选择: Rock, Paper 或 Scissors").toLowerCase();
        // 每轮生成新的电脑选择
        const computerSelection = computerPlay();
        // 打印本轮结果
        const roundResult = playRound(playerSelection, computerSelection);
        console.log(roundResult);
    }
    // 输出最终胜负
    console.log(playerScore === 5 ? "恭喜你,最终获胜!" : "很遗憾,电脑最终获胜!");
}

// 启动游戏
game();

关键修改点

  • 用while循环替代if,实现持续对战逻辑,直到一方得分≥5
  • 每轮循环内重新调用computerPlay()生成电脑选择,保证每轮随机性
  • 移除全局的playerSelection和computerSelection变量,避免作用域冲突导致的重复输入
  • 调用playRound后立即打印结果,实时展示每轮战况
  • 循环结束后判断最终胜负并给出提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:20:56