我正在写一个石头剪刀游戏。
播放器的console.log显示所选值。
计算机的console.log显示所选值。
检查值是否匹配的if语句始终返回true,即使控制台日志显示它们不同。
我尝试过几种不同的方法,但总是遇到这个问题。
// Player Choice Selection
var player = function() {
const playerSelects = "rock";
return playerSelects;
};
console.log(player());
// Computer Choice Selection
var computer = function() {
const computerSelects = ['rock', 'paper', 'scissors'];
let randomSelection = Math.floor(Math.random() * 3);
return computerSelects[randomSelection];
};
console.log(computer());
// Game
var game = function(player, computer) {
if (player == computer) {
const draw = "its a draw";
return draw;
}
};
console.log(game());
谁能告诉我这里哪里出错了?
由于
答案 0 :(得分:1)
游戏是一个有两个参数的函数:
var game = function(player, computer){
if(player == computer){
因此,如果您将其称为
game()
... player
和computer
都是undefined
,因为您没有传入任何值。可能会这样做:
game(computer(), player())
...但是你真的不应该影响这些变量名......
答案 1 :(得分:1)
您没有向game()
功能提供任何内容。
我认为这就是你想要的。
如上所述,player == computer
由于命名也不直观。人们不会指望玩家永远等于电脑。像playerValue == computerValue
这样的东西会更好。
// Player Choice Selection
var player = function() {
const playerSelects = "rock";
return playerSelects;
};
// Computer Choice Selection
var computer = function() {
const computerSelects = ['rock', 'paper', 'scissors'];
let randomSelection = Math.floor(Math.random() * 3);
return computerSelects[randomSelection];
};
// Game
var game = function(playerValue, computerValue) {
if (playerValue === computerValue) {
return "its a draw";
} else {
return "It's not a draw";
}
};
var playerValue = player();
var computerValue = computer();
console.log(playerValue);
console.log(computerValue);
console.log(game(playerValue, computerValue));
如果您不需要函数表达式,最好使用常规函数,如下所示:
// Player Choice Selection
function getPlayerChoice() {
const playerSelects = "rock";
return playerSelects;
};
// Computer Choice Selection
function getComputerChoice() {
const computerSelects = ['rock', 'paper', 'scissors'];
let randomSelection = Math.floor(Math.random() * 3);
return computerSelects[randomSelection];
};
// Game
function playGame(playerChoice, computerChoice) {
if (playerChoice === computerChoice) {
return "its a draw";
} else {
return "It's not a draw";
}
};
var playerChoice = getPlayerChoice();
var computerChoice = getComputerChoice();
console.log(playerChoice);
console.log(computerChoice);
console.log(playGame(playerChoice, computerChoice));
答案 2 :(得分:0)
你有一些错误。其他一些人已经部分修复,请允许我解释一下:
// Player Choice Selection
var player = function() {
const playerSelects = "rock";
return playerSelects;
};
// Don't log the result here, because it will change in the game instance.
// Computer Choice Selection
var computer = function() {
const computerSelects = ['rock', 'paper', 'scissors'];
let randomSelection = Math.floor(Math.random() * 3);
return computerSelects[randomSelection];
};
// Don't log the result here, because it will change in the game instance.
// Game
// Don't pass the player and computer functions in, because they're in global scope already.
var game = function() {
// Call an instance of the player, and computer functions.
// We do this so that each game we play, has new results.
var playerResult = player();
var computerResult = computer();
// Log each result
console.log(playerResult, computerResult)
if (playerResult == computerResult) {
const draw = "its a draw";
return draw;
}
};
console.log(game());