微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

石头,剪刀,剪刀布游戏:代码中的循环不断赋予我相同的随机结果

如何解决石头,剪刀,剪刀布游戏:代码中的循环不断赋予我相同的随机结果

我正在创建石头,纸张,剪刀游戏,并且只是测试未完成的代码。游戏在用户和计算机之间。

如您所见,computerSelection生成随机的“石头”,“纸”或“剪刀”。问题是,在不刷新页面的情况下,每当我在提示中键入“ rock”并单击“确定”时,都会在循环中得到相同的console.log消息:“干得好!Rock Beats Scissors”或“ Sorry!paper beats Rock” ”。换句话说,游戏已经变得单面了。每次我输入“ rock”并单击“确定”时,要么我总是赢,要么计算机总是赢。

更新:我已经修改代码,但是我遇到的另一个问题是有时代码会在console.log中重复,而不添加任何分数。如果您查看屏幕截图,它已将代码重复了2次,但未添加得分。

enter image description here

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}`);
  }
}

解决方法

对代码进行以下更改将使其起作用:

  1. 声明computerSelection的方式与playerSelection相同。

新版本:

const playerSelection = ''
const computerSelection = ''

原始版本:

const playerSelection = ''
const computerSelection = computerPlay()
  1. computerPlay()函数中调用函数playRound(playerSelection,computerSelection),因此每次玩家选择时也为computerSelection变量分配一个值。

新版本:

playerSelection= prompt ('Pick your...');
computerSelection = computerPlay();

原始版本:

 playerSelection= prompt ('Pick your...');

(免责声明:我已尝试保持尽可能接近原始代码。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。