2017-11-02 1 views
2

짐작 게임을 만들고 있는데 내 사용자가 같은 대답을 두 번 선택할 수없는 조건을 얻으려고합니다. userGuess가 빈 스팬 (사용자 추측)의 항목과 같지 않다면 아무 것도 발생하지 않는다고 생각하고있었습니다. javascript에 익숙하지 않고 방금 어떤 방향이 필요했습니다! 당신이 대답 할 때마다,이 있는지 확인하기 위해 이전의 모든 답을 확인 할 수 있도록 지금까지 사용자의 답변의 배열자바 스크립트 심령 게임

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

그것은 하나와 일치했다.

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

I는 다음과 같이 보일 것이다, 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

알았어! 고맙습니다. –