【问题标题】:Rock, paper, scissors game - repeating for 5 rounds石头、纸、剪刀游戏 - 重复 5 轮
【发布时间】:2019-02-23 13:01:49
【问题描述】:

我正在构建石头剪刀布任务。目前我的代码仅适用于 1 轮。我不确定如何在重复 5 轮的同时保持分数。我的印象是我至少需要一个 for 循环,大致如下:

for(i=0; i<5;i++);

但我不知道将它插入我的代码的位置。我在网上环顾四周,找不到足够简单的资源来理解不开始使用 switch 方法或任何其他更高级的代码来构建游戏的资源。任何帮助,将不胜感激。谢谢。

function computerPlay() {
  let random = Math.random();
  if (random <= 0.3333) {
    return "paper";
  } else if (random >= 0.6666) {
    return "rock";
  } else {
    return "scissors";
  }
}


function playRound(playerSelection, computerSelection) {
  if (playerSelection.toLowerCase() === "rock") {
    if (computerSelection === "paper") {
      computerScore++;
      return lose;
    } else if (computerSelection === "rock") {
      return tie;
    } else {
      userScore++;
      return win;
    }
  }

  if (playerSelection.toLowerCase() === "scissors") {
    if (computerSelection === "paper") {
      userScore++;
      return win;
    } else if (computerSelection === "rock") {
      computerScore++;
      return lose;
    } else {
      return tie;
    }
  }

  if (playerSelection.toLowerCase() === "paper") {
    if (computerSelection === "paper") {
      return tie;
    } else if (computerSelection === "rock") {
      userScore++;
      return win;
    } else {
      computerScore++;
      return lose;
    }
  }
}


let userScore = parseInt(0);
let computerScore = parseInt(0);
let win = "You win"
let lose = "You lose"
let tie = "It is a tie"
let playerSelection = prompt("Pick a move");
const computerSelection = computerPlay()
console.log(playRound(playerSelection, computerSelection))
console.log("your score = " + userScore);
console.log("Computer's score = " + computerScore);

【问题讨论】:

  • 你应该检查数组,这样你就可以在每次循环时存储结果。你调查过吗?
  • 我没有。我正在研究 Odin 项目指南,并且在这场比赛之后涵盖了数组。我真的不想偏离他们的教学秩序。不过还是谢谢。
  • 在有人浪费时间回答问题之前,请在您的问题中提及“无数组”。
  • 这有一个你可能想效仿的例子:stackoverflow.com/questions/1527803/…
  • 为您的代码添加了一些更新,使用递归查看更简单的方法。

标签: javascript loops recursion


【解决方案1】:

我已经编辑了你的代码片段,希望它能满足你的需求:)

只需将下面的代码放入 for 循环中

让 playerSelection = prompt("选择一个动作");
const computerSelection = computerPlay()
console.log(playRound(playerSelection, computerSelection))
console.log("你的分数 = " + userScore);
console.log("计算机分数 = " + computerScore);

function computerPlay() {
  let random = Math.random();
  if (random <= 0.3333) {
    return "paper";
  } else if (random >= 0.6666) {
    return "rock";
  } else {
    return "scissors";
  }
}


function playRound(playerSelection, computerSelection) {
  if (playerSelection.toLowerCase() === "rock") {
    if (computerSelection === "paper") {
      computerScore++;
      return lose;
    } else if (computerSelection === "rock") {
      return tie;
    } else {
      userScore++;
      return win;
    }
  }

  if (playerSelection.toLowerCase() === "scissors") {
    if (computerSelection === "paper") {
      userScore++;
      return win;
    } else if (computerSelection === "rock") {
      computerScore++;
      return lose;
    } else {
      return tie;
    }
  }

  if (playerSelection.toLowerCase() === "paper") {
    if (computerSelection === "paper") {
      return tie;
    } else if (computerSelection === "rock") {
      userScore++;
      return win;
    } else {
      computerScore++;
      return lose;
    }
  }
}


let userScore = parseInt(0);
let computerScore = parseInt(0);
let win = "You win"
let lose = "You lose"
let tie = "It is a tie"

for(var i=0;i<5;i++){
  let playerSelection = prompt("Pick a move");
  const computerSelection = computerPlay()
  console.log(playRound(playerSelection, computerSelection))
  console.log("your score = " + userScore);
  console.log("Computer's score = " + computerScore);
}

【讨论】:

  • 啊,完美。现在要去尝试理解它。感谢您的帮助。
  • 欢迎您@Alex,如果它对您有用,请不要忘记接受答案:)
【解决方案2】:

试试下面的代码:

循环不是一个好方法,在这里阅读:

它允许用户玩5次。

使用递归

function computerPlay() {
    let random = Math.random();
    if (random <= 0.3333) {
        return "paper";
    } else if (random >= 0.6666) {
        return "rock";
    } else {
        return "scissors";
    }
}


function playRound(playerSelection, computerSelection) {
    if (playerSelection.toLowerCase() === "rock") {
        if (computerSelection === "paper") {
            computerScore++;
            return lose;
        } else if (computerSelection === "rock") {
            return tie;
        } else {
            userScore++;
            return win;
        }
    }

    if (playerSelection.toLowerCase() === "scissors") {
        if (computerSelection === "paper") {
            userScore++;
            return win;
        } else if (computerSelection === "rock") {
            computerScore++;
            return lose;
        } else {
            return tie;
        }
    }

    if (playerSelection.toLowerCase() === "paper") {
        if (computerSelection === "paper") {
            return tie;
        } else if (computerSelection === "rock") {
            userScore++;
            return win;
        } else {
            computerScore++;
            return lose;
        }
    }
}


let userScore = parseInt(0);
let computerScore = parseInt(0);
let win = "You win"
let lose = "You lose"
let tie = "It is a tie"

var i = 0;
const play = () => {
    let playerSelection = prompt("Pick a move");
    const computerSelection = computerPlay()
    console.log(playRound(playerSelection, computerSelection))
    console.log("your score = " + userScore);
    console.log("Computer's score = " + computerScore);
    i++;
    if (i !== 5) {
        play();
    } else {
        alert("Game Over=> User("+userScore+") vs Computer("+computerScore+")");
    }
}

play();
猜你喜欢
  • 2020-05-22
  • 2013-12-09
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2015-05-16
  • 2017-01-17
相关资源
最近更新 更多