2017-11-02 6 views
2

私は推測ゲームを作成しており、私のユーザーが同じ回答を2回選ぶことを許可しない条件を取得しようとしています。私は何とかuserGuessが空のスパン(ユーザ推測)のアイテムと等しくない場合、何も起こらないと考えていました。 JavaScriptが新しく、ちょっとした方向性が必要でした。あなたが答えた時はいつでも、それはかどうかを確認するために、以前のすべての答えをチェックするように、あなたはこれまで、ユーザーの回答の配列Javascript Psychic Game

var userAnswers = []; 

を作成し、それを作った場合

<!DOCTYPE html> 
 
<html lang="en-us"> 
 
<head> 
 
\t <meta charset="utf-8"> 
 
\t <title>Psychic Game</title> 
 
</head> 
 
<body> 
 

 
\t <div id="game"> 
 
\t \t <h1> The Psychic Game </h1> 
 
\t \t <p>Guess what letter I'm thinking of!</p> 
 
\t \t <p>Wins:</p> 
 
\t \t <p>Losses:</p> 
 
\t \t <p>Guesses Left:</p> 
 
\t \t <p>Your Guesses so far:</p> 
 
\t </div> 
 

 
\t <script type="text/javascript"> 
 
\t \t 
 
\t \t 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",]; 
 

 
\t \t var wins = 0; 
 
\t \t var losses = 0; 
 
\t \t var numGuesses = 9; 
 
\t \t var guessChoices = []; 
 

 
\t \t document.onkeyup = function(event) { 
 

 
\t \t \t var userGuess = event.key; 
 

 
\t \t \t var computerGuess = computerChoices[Math.floor(Math.random() * computerChoices.length)]; 
 

 
\t \t \t 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",]; 
 
\t \t \t 
 

 
\t \t \t if (options.indexOf(userGuess) > -1) { 
 

 
\t \t \t \t if (userGuess === computerGuess) { 
 
\t \t \t \t \t wins++; 
 
\t \t \t \t \t numGuesses = 9; 
 
\t \t \t \t \t guessChoices = []; 
 
\t \t \t \t } 
 

 
\t \t \t \t if (userGuess != computerGuess) { 
 
\t \t \t \t \t numGuesses --; 
 
\t \t \t \t \t guessChoices.push(userGuess); 
 
\t \t \t \t } 
 

 
\t \t \t \t if (numGuesses === 0) { 
 

 
\t \t \t \t numGuesses = 9; 
 
\t \t \t \t losses ++; 
 
\t \t \t \t guessChoices = []; 
 

 
\t \t \t \t 
 
\t \t \t } 
 

 
\t \t \t var html = 
 
\t \t \t "<h1> The Psychic Game </h1>" + 
 
\t \t \t "<p>Guess what letter I'm thinking of!</p>" + 
 
\t \t \t "<p>Wins: " + wins + "</p>" + 
 
\t \t \t "<p>Losses: " + losses + "</p>" + 
 
\t \t \t "<p>Guesses Left: " + numGuesses + "</p>" + 
 
\t \t \t "<p>Your Guesses so far: " + guessChoices.join(", ") + "</p>"; 
 

 
\t \t \t document.querySelector("#game").innerHTML = html; 
 

 
\t \t \t 
 
\t \t \t } 
 
\t \t }; 
 

 
\t </script> 
 

 
</body> 
 
</html>

+3

実際にロジックを開発するように依頼するだけでなく、私たちが作業できるものを提供してください。私はあなたが完全な初心者であることを知っていますが、StackOverflowは開発者を支援するためのものであり、コードを記述するのではありません。 –

+2

少なくとも、これまでに試したことを他の人が知るためのコードを投稿してください。 – Niladri

+0

コードを投稿しようとしている過程で、私はサイトに初めて参加しています。つかまっている。 –

答えて

0

それは1つにマッチした。

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 
} 
0

私はこのようなものになり、guessChoicesは、ユーザーの現在の推測が含まれているかどうかを確認するためにarray.includesメソッドを使用します。あなたはそれので、すべてのキー操作で、コンピュータの推測をリセットしているが

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 = []; 
    } 
} 

を意図しない結果が生じることがあります。

+0

それを稼働させてください!ありがとうございました。 –