我正在创建一个猜测游戏,并试图获得一个条件,该条件不允许我的用户选择相同的答案两次。我在想,不知何故,如果userGuess不等于我创建的空范围(用户猜测)中的一个项,那么什么都不会发生。我是javascript的新手,只是需要一些指导!
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="utf-8">
<title>Psychic Game</title>
</head>
<body>
<div id="game">
<h1> The Psychic Game </h1>
<p>Guess what letter I'm thinking of!</p>
<p>Wins:</p>
<p>Losses:</p>
<p>Guesses Left:</p>
<p>Your Guesses so far:</p>
</div>
<script type="text/javascript">
var computerChoices = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",];
var wins = 0;
var losses = 0;
var numGuesses = 9;
var guessChoices = [];
document.onkeyup = function(event) {
var userGuess = event.key;
var computerGuess = computerChoices[Math.floor(Math.random() * computerChoices.length)];
var options = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",];
if (options.indexOf(userGuess) > -1) {
if (userGuess === computerGuess) {
wins++;
numGuesses = 9;
guessChoices = [];
}
if (userGuess != computerGuess) {
numGuesses --;
guessChoices.push(userGuess);
}
if (numGuesses === 0) {
numGuesses = 9;
losses ++;
guessChoices = [];
}
var html =
"<h1> The Psychic Game </h1>" +
"<p>Guess what letter I'm thinking of!</p>" +
"<p>Wins: " + wins + "</p>" +
"<p>Losses: " + losses + "</p>" +
"<p>Guesses Left: " + numGuesses + "</p>" +
"<p>Your Guesses so far: " + guessChoices.join(", ") + "</p>";
document.querySelector("#game").innerHTML = html;
}
};
</script>
</body>
</html>
发布于 2017-11-02 22:29:51
如果到目前为止已经创建了用户答案的数组
var userAnswers = [];无论你什么时候回答,它都会检查之前的所有答案,看看是否匹配。
var isDuplicate = false;
for (var i = 0; i < userAnswers.length; i++) { //for every previous answer
if (currentAnswer == userAnswers[i]) { //check if the current answer is a previous one
isDuplicate = true;
break; //exit loop
}
}
if (!isDuplicate) { //different than previous
userAnswers[userAnswers.length] = currentAnswer;
//do other code here
}发布于 2017-11-02 22:41:31
我将使用array.includes方法来检查guessChoices是否包含用户的当前猜测,如下所示:
if (options.indexOf(userGuess) > -1) {
if (userGuess === computerGuess) {
wins++;
numGuesses = 9;
guessChoices = [];
}
else {
if (guessChoices.includes(userGuess)) {
// Code for duplicate guess
}
else {
numGuesses--;
guessChoices.push(userGuess);
}
}
if (numGuesses === 0) {
numGuesses = 9;
losses++;
guessChoices = [];
}
} 但是,您在每次按键时都会重新设置计算机的猜测,因此可能会产生一些意想不到的结果。
https://stackoverflow.com/questions/47077439
复制相似问题