-2

I am using a while loop to check if the number of guesses is less than 10 and once 10 guesses has been made it will prompt you one last time to input the whole answer not just individual characters. I know you can use .length to check the length of the input but I am not sure how to check for a particular input of characters. I have already tried doing "(guess.length === phrase)" which is the prompt variable on the left and the word variable on the right.

Here is my code.

function myGame()
{
var name = prompt("Please enter your name");
document.getElementById("user_name").innerHTML = "Welcome " + name + " to Wheel of Fortune";    
const d = new Date();
document.getElementById("today_date").innerHTML = d;    

  var count = 0;
  phrase = "parseint";
var qs = document.querySelector("#hWord").addEventListener("keydown", qSelect);
  var lgth = phrase.length; var checkWin = false; var correct_guess = false; var guess;
  var numCols = lgth; new_word = ""; var crazyWord = ""; var new_word = ""; crzLgth = crazyWord.length;
  for (var cols = 0; cols < numCols; cols++)
  document.getElementById('wheel_game' + cols).innerHTML = ("/ ");
  document.getElementById('hWord').innerHTML = "The word was " + (phrase);  
  function qSelect()
  { 
    correct_guess = false;
    guess = prompt("Guess a letter");
    for (var j = 0; j < lgth; j++)
    {
      if (guess === phrase.charAt(j))
      {
        correct_guess = true;
         count = count + 1;  
        document.getElementById('wheel_game' + j).innerHTML = guess;        
        for (var nw = 0; nw < lgth; nw++)
        crazyWord = crazyWord + (document.getElementById('wheel_game' + nw).innerHTML);        
      }
      
      new_word = crazyWord.substr((crzLgth - lgth), lgth);
     
      checkWin = checkWord(phrase, new_word);      
    }
    
    if (checkWin === true)
    { 
      document.getElementById("result").innerHTML = ("You win!");
    }
    else if (checkWin === false)
    { 
      document.getElementById("result").innerHTML = ("You Lose");    
      if (correct_guess === false)
      count = count + 1;  
      if (count === 10) 
      {
        guess = prompt("One last chance to guess the word");    
      }
      else if (guess.length === phrase) {
        checkWin = true;
        document.getElementById("result").innerHTML = ("You win!");
      } 
    }

  function checkWord(phrase, otherWord)
  {
    var cleanWord;
    cleanWord = otherWord;
    if (phrase === cleanWord)
      return true;
    else
      return false;
    }
  }
}

HTML.

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<meta name="description" content="Wheel of Fortune">
<title>Wheel of Fortune Game</title>
</head>
<body>
    <h1>Welcome player</h1>    
    <p> Click to begin </p>
    <p>
    <input type="button" value="Begin" onclick="myGame();" />    
    </p>    
<p id="user_name"> </p> <br>
<p id="today_date"> </p> <br>
<p id="catagory"> </p> <br>

      <div id="wheel_game0"></div> <br>
      <div id="wheel_game1"></div> <br>
      <div id="wheel_game2"></div> <br>
      <div id="wheel_game3"></div> <br>
      <div id="wheel_game4"></div> <br>
      <div id="wheel_game5"></div> <br>
      <div id="wheel_game6"></div> <br>
      <div id="wheel_game7"></div> <br>
      <div id="wheel_game8"></div> <br>
      <div id="wheel_game9"></div> <br>
      
      <div id="hWord"><p></p></div>
      <div id="result"><p></p></div>
    
<script src="myScript.js"></script> 
</body>
</html>

1 Answers1

0

all you have in your while loop should be in separate function being triggered by

document.querySelector("#hWord").addEventListener("keydown", yourFunction);

and while keyword should be removed

Jacek Pietal
  • 1,980
  • 1
  • 18
  • 27
  • I would still need a loop to prompt for multiple guesses in this situation but I understand that querySelector would check if the characters in #hWord are selected and run the function I just created. I am updating my code with what I tried. – Austin Drake Apr 02 '22 at 15:23