Actualmente estoy trabajando en el juego TOP piedra, papel o tijera y tengo algunos problemas. La función playRound se muestra como indefinida en la consola. No estoy seguro de por qué, ya que todas mis otras funciones están funcionando. Quizás hice algo mal en las otras funciones pero no estoy seguro. Siento que estoy tan cerca pero tan lejos de que esto funcione. Tal vez son solo errores comunes de principiante, no estoy seguro. Cualquier ayuda sería apreciada.
function computerPlay() { var pickRandom = ["Rock", "Paper", "Scissors"]; var randomMove = pickRandom[Math.floor(Math.random() * 3)]; if (randomMove == "Rock") { randomMove.value = 0; } else if (randomMove == "Paper") { randomMove.value = 1; } else if (randomMove == "Scissors") { randomMove.value = 2; } return randomMove; } console.log(computerPlay()); var playerSelection = prompt("pick rock paper or scissors"); function userPlay() { if (playerSelection == "rock") { playerSelection.value = 0; } else if (playerSelection == "paper") { playerSelection.value = 1; } else if (playerSelection == "scissors") { playerSelection.value = 2; } return playerSelection; } console.log(userPlay()); function playRound(playerPick, computerSelection) { if (playerPick == 0 && computerSelection == 2) { alert("you win!!!"); } else if (playerPick == 0 && computerSelection == 1) { alert("you lose hahahahaha!!!"); } else if (playerPick == computerSelection) { alert("its a tie"); } } const playerPick = userPlay(); const computerSelection = computerPlay(); console.log(playRound(playerPick, computerSelection)); function computerPlay() { var pickRandom = ["Rock", "Paper", "Scissors"]; var randomMove = pickRandom[Math.floor(Math.random() * 3)]; if (randomMove == "Rock") { return 0; } else if (randomMove == "Paper") { return 1; } else if (randomMove == "Scissors") { return 2; } } var playerSelection = prompt("pick Rock, Paper or Scissors"); function userPlay() { if (playerSelection == "Rock") { return 0; } else if (playerSelection == "Paper") { return 1; } else if (playerSelection == "Scissors") { return 2; } } function playRound(playerPick, computerSelection) { console.log("player", playerPick) console.log("computerSelection", computerSelection) if (playerPick == 0 && computerSelection == 2) { console.log("you win!!!"); } else if (playerPick == 0 && computerSelection == 1) { console.log("you lose hahahahaha!!!"); } else if (playerPick == computerSelection) { console.log("its a tie"); } } const playerPick = userPlay(); const computerSelection = computerPlay(); playRound(playerPick, computerSelection);Solo necesitaba devolver los números de computerPlay y userPlay. Además, tenga cuidado con la distinción entre mayúsculas y minúsculas cuando utilice el aviso.
No debe ejecutarlo en console.log, ya que no tiene una palabra clave de return , por lo que devolverá undefined . Simplemente ejecútelo normalmente y estará bien.
Estás cerca. Lo limpié un poco, agregué una función que asigna variantes de entrada humana a un valor normalizado y reemplacé las condiciones (incompletas) en playRound con un objeto que captura todas las condiciones ganadoras en un objeto (ver beats )...
function normalizePlay(play) { const variants = { r: 'rock', rock: 'rock', p: 'paper', paper: 'paper', s: 'scissors', scissors: 'scissors' }; return variants [play.toLowerCase()]; } function computerPlay() { var pickRandom = ["rock", "paper", "scissors"]; return pickRandom[Math.floor(Math.random() * 3)]; } function playRound(human, computer) { const beats = { rock: 'scissors', scissors: 'paper', paper: 'rock' } let result; if (human === computer) { result = 'tie'; } else if (beats[human] === computer) { result = 'you win'; } else result = 'computer wins'; console.log(`you picked ${human}, computer picked ${computer}... ${result}`) } const human = normalizePlay(prompt("pick rock paper or scissors (or r, p, s)")); const computer = computerPlay(); playRound(human, computer);