石头剪刀布游戏javascript

时间:2020-04-08 15:10:08

标签: javascript

当前被javascript的石头,剪刀剪游戏困扰。只有我最后需要玩5次的功能game()无法正常工作。曾经尝试过使用for循环,但似乎我得到的答案是相同答案的5倍,而不是5个不同的随机答案。

有人可以帮我吗?

let playerScore = 0;
let computerScore = 0;

const playerSelection = playerPlay();
const computerSelection = computerPlay();

// computer select function
function computerPlay() {

    const option = ['rock', 'paper', 'scissors'];

    let random = Math.floor(Math.random() * 3);
    
    return option[random];
}

console.log('Computer: ' + computerSelection);

// player select function
function playerPlay() {

    const input = prompt('Please enter input');

    const option = input.toLowerCase();
    
    return option;
}

console.log('Player: ' + playerSelection);


// play 1 single round
function playRound(playerSelection, computerSelection) {

    if(playerSelection === computerSelection) {
        return 'It is a tie';
    }


    if(playerSelection === 'rock') {

        if(computerSelection === 'scissors') {
            playerScore++;
            return 'Player wins with rock';
        } else if(computerSelection === 'paper') {
            computerScore++;
            return 'Computer wins with paper'
        }
    }

    if(playerSelection === 'paper') {

        if(computerSelection === 'rock') {
            playerScore++;
            return 'Player wins with paper';
        } else if(computerSelection === 'scissors') {
            computerScore++;
            return 'Computer wins with scissors';
        }
    }

    if(playerSelection === 'scissors') {

        if(computerSelection === "paper") {
            playerScore++;
            return 'Player wins with scissors';
        } else if(computerSelection === 'rock') {
            computerScore++;
            return 'Computer wins with rock';
        }
    }

}

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

console.log('Player: ' + playerScore);
console.log('Computer: ' + computerScore);


// game

function game() {

    for(var i = 1; i <= 5; i++) {

       console.log('repeat 5 times');
       playRound(playerSelection, computerSelection);
    }

}

game();

3 个答案:

答案 0 :(得分:0)

您已经在不要求播放器和计算机输入的情况下放置了一个循环,因此该循环运行了5次而没有任何输入。我已经在代码段中修复了这个问题。不确定是否要以这种方式运行它。

let playerScore = 0;
let computerScore = 0;

// computer select function
function computerPlay() {

  const option = ['rock', 'paper', 'scissors'];

  let random = Math.floor(Math.random() * 3);

  return option[random];
}


// player select function
function playerPlay() {

  const input = prompt('Please enter input');

  const option = input.toLowerCase();

  return option;
}




// play 1 single round
function playRound(playerSelection, computerSelection) {

  if (playerSelection === computerSelection) {
    return 'It is a tie';
  }


  if (playerSelection === 'rock') {

    if (computerSelection === 'scissors') {
      playerScore++;
      return 'Player wins with rock';
    } else if (computerSelection === 'paper') {
      computerScore++;
      return 'Computer wins with paper'
    }
  }

  if (playerSelection === 'paper') {

    if (computerSelection === 'rock') {
      playerScore++;
      return 'Player wins with paper';
    } else if (computerSelection === 'scissors') {
      computerScore++;
      return 'Computer wins with scissors';
    }
  }

  if (playerSelection === 'scissors') {

    if (computerSelection === "paper") {
      playerScore++;
      return 'Player wins with scissors';
    } else if (computerSelection === 'rock') {
      computerScore++;
      return 'Computer wins with rock';
    }
  }

}

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


// game

function game() {
  for (i = 0; i <= 5; i++) {
    var playerSelection = playerPlay();
    var computerSelection = computerPlay();
    playRound(playerSelection, computerSelection);
    console.log('Computer: ' + computerSelection);
    console.log('Player: ' + playerSelection);
    console.log('Player: ' + playerScore);
    console.log('Computer: ' + computerScore);
  }
  console.log('Final Player: ' + playerScore);
  console.log('Final Computer: ' + computerScore);

}

game();

答案 1 :(得分:0)

您的问题是因为您一次设置了playerSelectioncomputerSelection(甚至在const上!所以选择无法更新)

您只需要将此部分移至for循环中(并更新为let,而不是const

    let playerSelection = playerPlay();
    let computerSelection = computerPlay();

let playerScore = 0;
let computerScore = 0;

// computer select function
function computerPlay() {

    const option = ['rock', 'paper', 'scissors'];

    let random = Math.floor(Math.random() * 3);
    
    return option[random];
}
// player select function
function playerPlay() {

    const input = prompt('Please enter input');

    const option = input.toLowerCase();
    
    return option;
}


// play 1 single round
function playRound(playerSelection, computerSelection) {
 
    

    if(playerSelection === computerSelection) {
        return 'It is a tie';
    }


    if(playerSelection === 'rock') {

        if(computerSelection === 'scissors') {
            playerScore++;
            return 'Player wins with rock';
        } else if(computerSelection === 'paper') {
            computerScore++;
            return 'Computer wins with paper'
        }
    }

    if(playerSelection === 'paper') {

        if(computerSelection === 'rock') {
            playerScore++;
            return 'Player wins with paper';
        } else if(computerSelection === 'scissors') {
            computerScore++;
            return 'Computer wins with scissors';
        }
    }

    if(playerSelection === 'scissors') {

        if(computerSelection === "paper") {
            playerScore++;
            return 'Player wins with scissors';
        } else if(computerSelection === 'rock') {
            computerScore++;
            return 'Computer wins with rock';
        }
    }

}


// game

function game() {

    for(var i = 1; i <= 5; i++) {

       let playerSelection = playerPlay();
       let computerSelection = computerPlay();
       
       
       
       console.log(`[Play turn ${i}] Player: ${playerSelection} | Computer: ${computerSelection}`);
       playRound(i);
    }

}

game();

答案 2 :(得分:0)

您的代码有一些问题。

  1. 您不会显示下一场比赛的输出。他们被演奏,但是结果是一样的。相同的游戏配置重复了5次。

    console.log('重复5次'); console.log(playRound(playerSelection,computerSelection));

代替:

console.log('repeat 5 times');
console.log(playRound(playerSelection, computerSelection));
  1. 您只能运行一次playerSelectioncomputerSelection函数。因此,下一场比赛的结果都是一样的。

您应该在每次循环迭代时执行这些功能。

示例:

let playerSelection = function () {

    const input = prompt('Please enter input');

    const option = input.toLowerCase();

    return option;
};

let computerSelection = function () {

    const option = ['rock', 'paper', 'scissors'];

    let random = Math.floor(Math.random() * 3);

    return option[random];
};

[...]

playRound(playerSelection(), computerSelection());