javascript - Rock, Paper, Scissors 游戏:我的代码中的循环不断给我相同的随机结果
问题描述
我正在创建一个石头、纸、剪刀游戏,并且只是测试我未完成的代码。游戏是在用户和计算机之间进行的。
如您所见,computerSelection
将随机生成“石头”、“纸”或“剪刀”。问题是,在不刷新页面的情况下,每次我在提示符中键入“rock”并点击 OK,我都会在循环中收到相同的 console.log 消息:“干得好!Rock Beats Scissors”或“Sorry!paper beats Rock” ”。换句话说,游戏变得片面了;每次我输入“rock”并点击 OK,要么我总是赢,要么电脑总是赢。
更新:我已经修改了我的代码,但我遇到的另一个问题是有时代码会在 console.log 中重复,而不是添加任何分数。如果你看截图,它已经重复了 2 次代码,但没有添加分数。
const playerSelection = ''
const computerSelection = computerPlay()
let computerScore = 0;
let playerScore = 0;
console.log(playRound(playerSelection, computerSelection))
function computerPlay(){
let values = ['rock', 'paper', 'scissors'],
valueToUse = values [Math.floor(Math.random()* values.length)];
return valueToUse;
};
function playRound(playerSelection, computerSelection) {
while(true){
playerSelection = prompt ('Pick your poison');
if (playerSelection.toLowerCase() === 'rock' && computerPlay() === 'paper'){
computerScore += 1
console.log('Sorry! Paper beats Rock')
}
else if (playerSelection.toLowerCase() === 'rock'.toLowerCase() && computerPlay() === 'scissors'){
playerScore += 1
console.log('Good job! Rock beats Scissors');
}
else
{
console.log('Please type Rock, Paper, or Scissors')
}
console.log (`User Selection: ${playerSelection.toUpperCase()} | Player Score: ${playerScore}
Computer Selection: ${computerSelection.toUpperCase()} | Computer Score: ${computerScore}`);
}
}
解决方案
对代码的以下更改将使其工作:
- 声明
computerSelection
方式与playerSelection
.
新版本:
const playerSelection = ''
const computerSelection = ''
原始版本:
const playerSelection = ''
const computerSelection = computerPlay()
computerPlay()
在函数内调用playRound(playerSelection, computerSelection)
函数,因此computerSelection
每次玩家选择时也会为变量分配一个值。
新版本:
playerSelection= prompt ('Pick your...');
computerSelection = computerPlay();
原始版本:
playerSelection= prompt ('Pick your...');
(免责声明:我试图尽可能接近原始代码。)
推荐阅读
- python - udp广播节目
- data-binding - 如何在淘汰赛中嵌套for循环中的数据绑定时比较两个数据
- c - 运行级别 3 (Linux) 上的 C 非阻塞键盘输入块
- azure-devops - 如何在发布时实现 Git 标记和合并?
- reactjs - React Native TypeError undefined is not an object
- python - 为什么将相同的功能绑定到键盘会修改 tkinter 按钮的工作方式?
- c - 在 C 中按字母顺序排列以不按字母顺序排列
- sip - 奇怪的网络问题
- python - 如何在 1 行中巧妙地选择一个 numpy 子数组?
- tensorflow - 如何用张量流重复张量元素?