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

JavaScript石头剪刀布游戏仅返回平局结果,求代码问题排查

代码主要问题分析

1. getComputerChoice 函数未返回结果

这个函数仅打印了随机选中的选项,但没有通过 return 语句返回该值,导致 computerSelection 变量的实际值是 undefined。playRound 里的所有判断条件都是和具体字符串比较,undefined 和任何字符串都不相等,因此直接进入 else 分支返回平局。

修改方式:在函数末尾添加返回语句:

function getComputerChoice () {
    const myArray=["Rock" , "Paper", "Scissors"]
    const random = Math.floor(Math.random() * myArray.length);
    return myArray[random]; // 返回随机选中的选项
}

2. 字符串大小写不匹配

你定义的 playerSelection 是小写的 "rock",但 playRound 里的判断条件全是大写开头的 "Rock"、"Paper"、"Scissors"。字符串比较是严格区分大小写的,"rock" 和 "Rock" 永远不相等,这也会导致所有胜负判断条件不成立,直接触发平局。

解决方法:

  • 方式一:统一 playerSelection 的大小写:
    const playerSelection = "Rock";
    
  • 方式二:在 playRound 里统一转换为相同大小写(推荐,能兼容用户输入的不同大小写):
    function playRound(playerSelection, computerSelection) {
        const player = playerSelection.toLowerCase();
        const computer = computerSelection.toLowerCase();
        // 后续条件全部改用小写字符串判断
        if (player === "rock" && computer === "paper") {
            return("You Lose! Paper beats Rock");
        }
        // 其余胜负判断条件同理修改
    }
    

3. 循环中重复使用同一电脑选择

game 函数的循环里,每次调用 playRound 用的都是初始化时生成的 computerSelection,也就是5轮游戏共用同一个电脑选择。应该在每一轮循环里重新调用 getComputerChoice 生成新的选项:

function game() {
    for (let i = 0; i < 5; i++) {
        const currentComputerChoice = getComputerChoice();
        var result = playRound(playerSelection, currentComputerChoice);
        console.log(result);
    }
}

修复以上问题后,代码就能正常判断胜负,不会持续返回平局结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:48:45