在奥丁项目的石头剪刀游戏中遇到了一些麻烦



这里完全是初学者,我一直在学习奥丁项目的基础课程,更具体地说,是javascript中的石头、纸、剪刀游戏。我一直在尝试用循环来重复游戏,直到有人获胜并出现一些问题。当我摆弄循环并从While变为if和for时,我正要放弃并在这里提问。然而,我做了一些工作,虽然不是完全正确的,因为你不能取消比赛,而且比赛实际上没有5轮,但使用了不同的方法。这是我的代码:

编辑:倒数第二句基本上是我的问题,我尝试了一些方法来进行轮次,进行可变轮次,然后将其放入循环中,然而循环将轮次计数为五次,而没有确保球员和计算机的得分达到目标,而且我忘了添加平局选项。我试着通过在其中添加条件词来解决这个问题,但它很快就变得一团糟,我迷失了方向,删除了它,做了这个。直到我开始提出这个问题时,我才真正想到取消选项

let playerScore = 0;
let computerScore = 0;
// gives a random value from the array
function computerPlay() {
let choice = ['rock', 'paper', 'scissors'];
let randomPlay = Math.floor(Math.random() * choice.length);
return choice[randomPlay]
}
// plays a round of a game
function round() {
let computerChoice = computerPlay();
let playerChoice = prompt('What do you choose?', ''.toLowerCase());
if (playerChoice === 'rock' & computerChoice === 'paper') {
computerScore += 1;
alert('You lose, paper beats rock!');
} else if (playerChoice === 'paper' & computerChoice === 'scissors') {
computerScore += 1;
alert('You lose, scissors beat paper!');
} else if (playerChoice === 'scissors' & computerChoice === 'paper') {
computerScore += 1;
alert('You lose, rock beats scissors!');
} else if (playerChoice === 'rock' & computerChoice === 'scissors') {
playerScore += 1;
alert('You win, rock beats scissors!');
} else if (playerChoice === 'paper' & computerChoice === 'rock') {
playerScore += 1;
alert('You win, paper beats rock!');
} else if (playerChoice === 'scissors' & computerChoice === 'paper') {
playerScore += 1;
alert('You win, scissors beat paper!');
}
if (playerScore >= 3) {
alert('You win the game!')
} else if (computerScore >= 3) {
alert('Computer wins the game!')
}
}
//repeats rounds until someone wins the game
function game() {
for (i = 1; playerScore < 3 && computerScore < 3; i++) {
round();
}
}
game();

我建议Rock剪刀使用阵列系统,因为它比使用循环更简洁、更快。

const checker_arr = [['Tie', 'Lost', 'Won'],['Won', 'Tie', 'Lost'],['Lost', 'Won', 'Tie']];
  • 0是岩石
  • 1是纸张
  • 2是剪刀

因此,现在如果用户选择0(岩石(,计算机选择2(剪刀(,则用户获胜。

Github-查看此实时代码

最新更新