亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何循環 playRound() 函數?

如何循環 playRound() 函數?

慕后森 2023-08-24 21:08:10
我正在制作我的第一個石頭剪刀布游戲。我還沒有正式完成循環,但我正在嘗試將 for 循環應用于 playRound 函數,以便它播放五次??杀氖俏也淮_定在哪里應用它。我嘗試了幾種方法,但不斷出現錯誤。任何人都可以看看并提供一個選項。代碼如下。function computerPlay() {  const number = Math.floor(Math.random() * 1000);  if (number % 3 === 0) {    return "rock";  }  if (number % 3 === 1) {    return "paper";  } else {    return "scissors";  }}function playRound(playerSelection, computerSelection) {  playerSelection = "rock";  computerSelection = computerPlay();  if (    (playerSelection == "rock" && computerSelection == "scissors") ||    (playerSelection == "scissors" && computerSelection == "paper") ||    (playerSelection == "paper" && computerSelection == "rock")  ) {    return "Player Wins!";  } else if (    (playerSelection == "rock" && computerSelection == "paper") ||    (playerSelection == "paper" && computerSelection == "scissors") ||    (playerSelection == "scissors" && computerSelection == "rock")  ) {    return "Computer Wins!";  } else {    return "Tie";  }}playerSelection = "rock";computerSelection = computerPlay();console.log(playRound(playerSelection, computerSelection));
查看完整描述

3 回答

?
慕容森

TA貢獻1853條經驗 獲得超18個贊

希望這個例子能給我們一些關于如何進行良好編程的提示


// rock = 0

// paper = 1

// scissor = 2

const valueMap = {

  0: 'rock',

  1: 'paper',

  2: 'scissor'

}


function pick() {

  return Math.floor(Math.random() * 3)

}


function decide(p1, p2) {

  const pool = [p1, p2]

  const sortedPool = pool.sort((a, b) => b.value - a.value)

  const diff = sortedPool[0].value - sortedPool[1].value

  if (diff === 2) {

    return sortedPool[1].name

  } else if (diff === 0) {

    return 'draw'

  } else {

    return pool.find(v => v.value === sortedPool[0].value).name

  }

}


function play(times, cb) {

  let n = 1

  while (n <= times) {

    cb(n)

    n++

  }

}


play(5, function(n) {

  const player1 = {

    name: 'Player',

    value: pick()

  }

  const player2 = {

    name: 'Computer',

    value: pick()

  }

  const result = decide(player1, player2)

  console.log(

    `Game ${n}`,

    `${player1.name} ${valueMap[player1.value]}`,

    ` vs `,

    `${player2.name} ${valueMap[player2.value]}`,

    `>>> Winner ${result}

    `

  )

})



查看完整回答
反對 回復 2023-08-24
?
UYOU

TA貢獻1878條經驗 獲得超4個贊

如果我正確理解你想要什么,你可以用whilea 做一個循環counter,我還改進了你的代碼,使嚴格相等(從==到===),并刪除了冗余代碼


let counter = 1;


function computerPlay() {

  const number = Math.floor(Math.random() * 1000);

  if (number % 3 === 0) {

    return "rock";

  } else if (number % 3 === 1) {

    return "paper";

  } else {

    return "scissors";

  }

}


function playRound(playerSelection, computerSelection) {

  counter++;

  if (

    (playerSelection === "rock" && computerSelection === "scissors") ||

    (playerSelection === "scissors" && computerSelection === "paper") ||

    (playerSelection === "paper" && computerSelection === "rock")

  ) {

    return "Player Wins!";

  } else if (

    (playerSelection === "rock" && computerSelection == "paper") ||

    (playerSelection === "paper" && computerSelection === "scissors") ||

    (playerSelection === "scissors" && computerSelection === "rock")

  ) {

    return "Computer Wins!";

  } else {

    return "Tie";

  }

}

playerSelection = "rock";


while (counter < 6) {

  console.log(playRound(playerSelection, computerPlay()));

}


查看完整回答
反對 回復 2023-08-24
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

為最后 3 行添加循環


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

       playerSelection = "rock";

       computerSelection = computerPlay();

       console.log(playRound(playerSelection, computerSelection));

    }

編輯:請注意,由于計算機選擇在第二個參數中傳遞,因此 playRound 函數內有多余的調用函數computerPlay()


查看完整回答
反對 回復 2023-08-24
  • 3 回答
  • 0 關注
  • 317 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號