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

JavaScript中如何获取prompt输入并用于函数?剪刀石头布游戏问题排查

剪刀石头布游戏修复方案

问题排查

你的代码存在三个核心问题,导致prompt不弹出或游戏逻辑失效:

  • getUserChoice函数未返回用户输入的值,调用后得到的是undefined
  • getComputerChoice里的Math.random没加括号调用,拿到的是函数对象而非随机数,判断逻辑完全失效
  • 没有主动调用playRound函数,整个代码不会自动执行

修复后的完整代码

function getUserChoice() {
    // 获取用户输入并转小写,避免大小写差异影响判断
    let userChoice = window.prompt('rock, paper or scissors?');
    return userChoice ? userChoice.toLowerCase() : null;
}

function getComputerChoice() {
    // 调用Math.random()生成0-1的随机数
    let computerChoice = Math.random(); 
    if (computerChoice < 0.34){
        return 'rock';
    } else if (computerChoice <= 0.67){
        return 'paper';
    } else {
        return 'scissors';
    }
}

function playRound() {
    const playerSelection = getUserChoice();
    // 处理用户取消输入的情况
    if (!playerSelection) {
        console.log('游戏已取消');
        return;
    }
    // 校验输入是否合法
    if (!['rock', 'paper', 'scissors'].includes(playerSelection)) {
        console.log('请输入有效的选项:rock、paper或scissors');
        return;
    }
    const computerSelection = getComputerChoice();
    
    if (playerSelection === 'rock' && computerSelection === 'scissors') {
        console.log('你赢了!石头击败剪刀');
    } else if (playerSelection === 'scissors' && computerSelection === 'paper') {
        console.log('你赢了!剪刀击败布');
    } else if(playerSelection === 'paper' && computerSelection === 'rock') {
        console.log('你赢了!布击败石头');
    } else if(playerSelection === 'scissors' && computerSelection === 'rock') {
        console.log('你输了!石头击败剪刀');
    } else if(playerSelection === 'paper' && computerSelection === 'scissors') {
        console.log('你输了!剪刀击败布');
    } else if (playerSelection === 'rock' && computerSelection === 'paper') {
        console.log('你输了!布击败石头');
    } else {
        console.log('平局');
    }
}

// 启动游戏
playRound();

修复说明

  1. 给getUserChoice添加返回值,同时将用户输入转为小写,避免因大小写不一致导致判断错误
  2. 修正Math.random()的调用方式,确保生成有效的随机数值
  3. 增加输入合法性校验,处理用户输入无效内容或取消prompt的场景
  4. 主动调用playRound()触发游戏流程,这样页面加载后会自动弹出输入框

修复后游戏可以正常运行:页面加载时弹出输入框获取用户选择,生成电脑的随机选择,对比后在控制台输出胜负结果。

内容的提问来源于stack exchange,提问作者João Vitor de Oliveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:10:30