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

JS入门项目:石头剪刀布游戏单轮玩法问题求助

石头剪刀布游戏问题修复

问题1:大小写不敏感输入的支持

你的userInput函数里已经用了ask.toLowerCase(),不管用户输入rock、Rock、ROCK还是rOcK,都会被统一转成小写格式,完全支持大小写不敏感输入,这部分逻辑没问题。

问题2:平局时随机显示错误结果的原因

你在代码开头单独调用了一次console.log(getComputerChoice());,这会先随机生成一个电脑选择并打印,但实际游戏逻辑里,你又调用了一次getComputerChoice()赋值给computerSelection——这意味着控制台打印的电脑选择,和实际参与游戏的电脑选择是两个完全独立的随机结果!

举个例子:

  1. 第一次调用getComputerChoice()生成rock,控制台打印出来
  2. 你输入Rock,被转成rock
  3. 第二次调用getComputerChoice()随机生成了scissors
  4. 此时playRound会返回You win!,但你看到控制台打印的是rock,就误以为是平局却显示赢了,其实是两次随机结果不一致导致的误解。

修复后的代码

删掉开头多余的console.log(getComputerChoice());,确保游戏只生成一次电脑选择,同时做了小优化:

function getComputerChoice() {
    const randomNum = Math.floor(Math.random() * 3) 
    switch (randomNum) { 
        case 0:
            return "rock";
        case 1:
            return "paper";
        case 2:
            return "scissors";
    }
}

function userInput() {
    const ask = prompt("To begin game, select Rock, Paper, or Scissors");
    // 处理用户取消输入或空值的情况
    if (!ask) {
        alert("请输入有效的选项!");
        return userInput();
    }
    return ask.toLowerCase();
}

function playRound(playerSelection, computerSelection) {
    // 换成严格相等运算符,避免类型转换问题
    if (playerSelection === "rock" && computerSelection === "scissors") {
        return "You win!";
    } else if (playerSelection === "rock" && computerSelection === "paper") {
        return "You lose";
    } else if (playerSelection === "scissors" && computerSelection === "paper") {
        return "You win!";
    } else if (playerSelection === "scissors" && computerSelection === "rock") {
        return "You lose";
    } else if (playerSelection === "paper" && computerSelection === "rock") {
        return "You win!";
    } else if (playerSelection === "paper" && computerSelection === "scissors") {
        return "You lose";
    } else if (playerSelection === computerSelection) {
        return "It's a tie";
    } else {
        return "Try again";
    }
}

const playerSelection = userInput();
const computerSelection = getComputerChoice();
// 打印实际参与游戏的双方选择,方便验证结果
console.log(`你的选择:${playerSelection},电脑选择:${computerSelection}`);
console.log(playRound(playerSelection, computerSelection));

额外优化说明

  • 把==换成===严格相等运算符,避免潜在的类型转换问题
  • 给userInput函数加了空值处理,防止用户取消弹窗或输入空内容导致逻辑出错
  • 新增了双方选择的打印代码,方便你直观验证游戏结果是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:05:22