问题
- 在 playRound 函数中,我返回一个函数,一旦结果对象等于 5(即 5 轮),该函数就应该停止。然而,它只会玩一个游戏,然后一旦你尝试再次玩;它会重复记录平局。
这是我尝试过的
我只使用了我的convertMoves()函数,而不是在返回函数中同时使用了我的playRound()函数
预期结果
一旦我回答了提示,我希望得到的不是平局,而是有意义的不同结果。它不应该总是“平局”,“平局”,“平局”,而是“赢”,“平局”,“输”,“赢”,“平局”
var moves, result;
moves = {
rock: 0,
paper: 1,
scissors: 2,
};
result = {
win: 0,
tie: 0,
lose: 0
};
function convertMoves() {
playerSelection = prompt('Please choose rock, paper, or scissors').toLowerCase();
return moves[playerSelection];
}
function computerPlay() {
var movesValues = Object.values(moves);
var random = Math.floor(Math.random() * movesValues.length);
return movesValues[random];
}
function playRound(playerSelection, computerSelection) {
var processResult = (3 + computerSelection - playerSelection) % 3;
if (!processResult) {
++result.tie;
console.log('tie');
} else if (1 == processResult) {
++result.lose;
console.log('You lost');
} else {
++result.win;
console.log('You won');
}
return function() {
var rounds = 0;
var resultValues = Object.values(result);
for (var i = 0; i < resultValues.length; i++) {
rounds += resultValues[i];
}
console.log(rounds);
if (rounds !== 5) {
convertMoves();
playRound(playerSelection, computerSelection)();
}
return result;
}
}
var computerSelection = computerPlay();
var playerSelection = convertMoves();
console.log(playRound(playerSelection, computerSelection)());
最佳答案
playerSelection
只是得到 undefined
因为它的值在闭包函数中设置后没有更新。通过这样做 playerSelection = ConvertMoves();
它的工作现在被罚款了。希望这能解决您的问题。
var moves, result;
moves = {
rock: 0,
paper: 1,
scissors: 2,
};
result = {
win: 0,
tie: 0,
lose: 0
};
function convertMoves() {
playerSelection = prompt('Please choose rock, paper, or scissors').toLowerCase();
return moves[playerSelection];
}
function computerPlay() {
var movesValues = Object.values(moves);
var random = Math.floor(Math.random() * movesValues.length);
return movesValues[random];
}
function playRound(playerSelection, computerSelection) {
debugger
var processResult = (3 + computerSelection - playerSelection) % 3;
if (!processResult) {
++result.tie;
console.log('tie');
} else if (1 == processResult) {
++result.lose;
console.log('You lost');
} else {
++result.win;
console.log('You won');
}
return function() {
var rounds = 0;
var resultValues = Object.values(result);
for (var i = 0; i < resultValues.length; i++) {
rounds += resultValues[i];
}
console.log(rounds);
if (rounds !== 5) {
playerSelection = convertMoves();
playRound(playerSelection, computerSelection)();
}
return result;
}
}
var computerSelection = computerPlay();
var playerSelection = convertMoves();
console.log(playRound(playerSelection, computerSelection)());
关于javascript - 剪刀石头布游戏 (js) - 如何创建圆形函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57635440/