JavaScript石头剪刀布游戏:胜负统计异常,始终判定平局求助
石头剪刀布游戏平局问题排查方案
嘿,Lisa!我太懂你花几小时揪问题却一直出平局的崩溃感了——这种看似简单的小bug往往最磨人😅。咱们从最容易踩坑的几个点入手排查:
1. 用户输入的大小写不匹配(最常见!)
你写的getChoice函数直接返回用户输入的内容,但用户可能输入Rock、PAPER这种大小写混合的内容,而如果你的胜负判断代码只判断了全小写的rock/paper/scissors,就会因为字符串不相等,导致逻辑误判为平局。
修改getChoice函数,把用户输入统一转成小写:
function getChoice() { var choice = prompt("Do you pick rock, paper or scissors?"); // 统一转小写,避免大小写差异导致匹配失败 return choice ? choice.toLowerCase() : ""; }
2. 胜负判断逻辑有漏洞
如果你的胜负判断只写了“相等则平局”,但没正确处理不同选择的胜负条件,或者条件写反了,也会一直返回平局。比如你可能漏写了用户赢的分支,导致所有非平局的情况也被当成平局处理。
给你一个正确的胜负判断函数示例:
function determineWinner(userChoice, computerChoice) { if (userChoice === computerChoice) { return "It's a tie!"; } // 明确判断用户赢的三种场景 if ((userChoice === "rock" && computerChoice === "scissors") || (userChoice === "scissors" && computerChoice === "paper") || (userChoice === "paper" && computerChoice === "rock")) { return "You win!"; } // 剩下的情况就是电脑赢 return "Computer wins!"; }
3. 电脑选择不是随机的
如果你的电脑选择逻辑写死了固定值(比如var computerChoice = "rock"),而不是随机生成,那大概率会频繁出现平局。正确的电脑随机选择逻辑应该是这样:
function getComputerChoice() { var randomNum = Math.floor(Math.random() * 3); switch(randomNum) { case 0: return "rock"; case 1: return "paper"; case 2: return "scissors"; } }
先从这三点查起,尤其是第一点的大小写问题,90%的这类平局bug都是因为这个小细节遗漏了!
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

