I am making a little hang man game in HTML and I am trying to push a letter which the user has guessed correctly to where ever it needs to go in the div
. Here is what I have so far:
var words = ['dog', 'mouse', 'horse', 'fossil', 'christmas', 'mountain', 'javascript', 'glitter', 'pringles', 'connect'];
var output = "";
var gRand = "";
var gWordAry = "";
function startGame() {
var rand = words[Math.floor(Math.random() * words.length)]; //gets a random word from the array, stores as rand
var wordAry = rand.split(''); //splits random word into its own array and each letter is in the array
gRand = rand; //stores random word as global var
gWordAry = wordAry;
alert(wordAry);
$('#hangmanGame').show();
$('#startBtn').hide();
//alert(rand);
for (i = 0; i < wordAry.length; i++) { //draws a dash for every letter in the random word array after split
//draw canvas dash
output += ' _ ';
$('#wordGuess').html(output);
}
//alert(output);
}
function guess(letter) {
var letterID = letter.toLowerCase(); //converts letter to lowercase from html
//alert(letterID);
var foundLetter = 0;
for (i=0;i<gWordAry.length; i++){
if (gWordAry[i] == letterID){ //if a letter in the word array = the letter clicked this will run
//alert('correct');
foundLetter++;
displayLetter(letterID);
}
}
if (foundLetter == 0){ //if no letters in the array are found this will run
alert('Try Again');
}
}
function displayLetter(letterID){
//displays all letters in the word
$('#wordGuess').append(letterID)
}
HTML:
<div id="hangmanGame">
<div id="wordGuess"> </div> //THIS IS THE DIV WHERE THE LETTERS ARE GOING
<table style="margin: auto;position: relative;top: 500px;">
<tr>
<td><button class="alphabet" type="button"> </button></td>
<td> <button type="button" onclick="guess('A')" id="1" class="alphabet">A </button></td>
<td> <button type="button" onclick="guess('B')" id="2" class="alphabet">B </button></td>
<td> <button type="button" onclick="guess('C')" id="3" class="alphabet">C </button></td>
<td> <button type="button" onclick="guess('D')" id="4" class="alphabet">D </button></td>
<td> <button type="button" onclick="guess('E')" id="5" class="alphabet">E </button></td>
<td> <button type="button" onclick="guess('F')" id="6" class="alphabet">F </button></td>
<td> <button type="button" onclick="guess('G')" id="7" class="alphabet">G </button></td>
<td> <button type="button" onclick="guess('H')" id="8" class="alphabet">H </button></td>
<td> <button class="alphabet" type="button"> </button></td></tr>
<tr>
<td> <button class="alphabet" type="button"> </button></td>
<td> <button type="button" onclick="guess('I')" id="9" class="alphabet">I </button></td>
<td> <button type="button" onclick="guess('J')" id="10" class="alphabet">J </button></td>
<td> <button type="button" onclick="guess('K')" id="11" class="alphabet">K </button></td>
<td> <button type="button" onclick="guess('L')" id="12" class="alphabet">L </button></td>
<td> <button type="button" onclick="guess('M')" id="13" class="alphabet">M </button></td>
<td> <button type="button" onclick="guess('N')" id="14" class="alphabet">N </button></td>
<td> <button type="button" onclick="guess('O')" id="15" class="alphabet">O </button></td>
<td> <button type="button" onclick="guess('P')" id="16" class="alphabet">P </button></td>
<td><button class="alphabet" type="button"> </button></td></tr>
<tr> <td> <button type="button" onclick="guess('Q')" id="17" class="alphabet">Q </button></td>
<td> <button type="button" onclick="guess('R')" id="18" class="alphabet">R </button></td>
<td> <button type="button" onclick="guess('S')" id="19" class="alphabet">S </button></td>
<td> <button type="button" onclick="guess('T')" id="20" class="alphabet">T </button></td>
<td> <button type="button" onclick="guess('U')" id="21" class="alphabet">U </button></td>
<td> <button type="button" onclick="guess('V')" id="22" class="alphabet">V </button></td>
<td> <button type="button" onclick="guess('W')" id="23" class="alphabet">W </button></td>
<td> <button type="button" onclick="guess('X')" id="24" class="alphabet">X </button></td>
<td> <button type="button" onclick="guess('Y')" id="25" class="alphabet">Y </button></td>
<td> <button type="button" onclick="guess('Z')" id="26" class="alphabet">Z </button></td> </tr>
</table>
</div>
The code may be a bit messy. I'm new to coding. Can anyone help? What I have at the moment adds the letter to the end of the _
.
Here is the working version of game :)
replaceAt function taken from here
var words = ['dog'];
var output = "";
var gRand = "";
var gWordAry = "";
function startGame() {
var rand = words[Math.floor(Math.random() * words.length)]; //gets a random word from the array, stores as rand
var wordAry = rand.split(''); //splits random word into its own array and each letter is in the array
gRand = rand; //stores random word as global var
gWordAry = wordAry;
alert(wordAry);
$('#hangmanGame').show();
$('#startBtn').hide();
//alert(rand);
for (i = 0; i < wordAry.length; i++) { //draws a dash for every letter in the random word array after split
//draw canvas dash
output += ' _ ';
$('#wordGuess').html(output);
}
//alert(output);
}
currentIndex = 0
function guess(letter) {
var letterID = letter.toLowerCase(); //converts letter to lowercase from html
//alert(letterID);
var foundLetter = 0;
for (i = 0; i < gWordAry.length; i++) {
if (gWordAry[i] == letterID && gWordAry[i] !== '_') { //if a letter in the word array = the letter clicked this will run
//alert('correct');
if (currentIndex == i){
foundLetter++;
gWordAry[i] = '_'
displayLetter(letterID, currentIndex++);
break;
}
}
}
if (foundLetter == 0) { //if no letters in the array are found this will run
alert('Try Again');
}
}
String.prototype.replaceAt = function(index, character) {
return this.substr(0, index) + character + this.substr(index + character.length);
}
function displayLetter(letterID,i) {
//displays all letters in the word
var toReplace = $('#wordGuess').html();
$('#wordGuess').html($('#wordGuess').html().replaceAt($('#wordGuess').html().indexOf('_'), letterID))
}
startGame()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hangmanGame">
<div id="wordGuess"></div>
<table style="margin: auto;position: relative;top: 10px;">
<tr>
<td>
<button class="alphabet" type="button"></button>
</td>
<td>
<button type="button" onclick="guess('A')" id="1" class="alphabet">A</button>
</td>
<td>
<button type="button" onclick="guess('B')" id="2" class="alphabet">B</button>
</td>
<td>
<button type="button" onclick="guess('C')" id="3" class="alphabet">C</button>
</td>
<td>
<button type="button" onclick="guess('D')" id="4" class="alphabet">D</button>
</td>
<td>
<button type="button" onclick="guess('E')" id="5" class="alphabet">E</button>
</td>
<td>
<button type="button" onclick="guess('F')" id="6" class="alphabet">F</button>
</td>
<td>
<button type="button" onclick="guess('G')" id="7" class="alphabet">G</button>
</td>
<td>
<button type="button" onclick="guess('H')" id="8" class="alphabet">H</button>
</td>
<td>
<button class="alphabet" type="button"></button>
</td>
</tr>
<tr>
<td>
<button class="alphabet" type="button"></button>
</td>
<td>
<button type="button" onclick="guess('I')" id="9" class="alphabet">I</button>
</td>
<td>
<button type="button" onclick="guess('J')" id="10" class="alphabet">J</button>
</td>
<td>
<button type="button" onclick="guess('K')" id="11" class="alphabet">K</button>
</td>
<td>
<button type="button" onclick="guess('L')" id="12" class="alphabet">L</button>
</td>
<td>
<button type="button" onclick="guess('M')" id="13" class="alphabet">M</button>
</td>
<td>
<button type="button" onclick="guess('N')" id="14" class="alphabet">N</button>
</td>
<td>
<button type="button" onclick="guess('O')" id="15" class="alphabet">O</button>
</td>
<td>
<button type="button" onclick="guess('P')" id="16" class="alphabet">P</button>
</td>
<td>
<button class="alphabet" type="button"></button>
</td>
</tr>
<tr>
<td>
<button type="button" onclick="guess('Q')" id="17" class="alphabet">Q</button>
</td>
<td>
<button type="button" onclick="guess('R')" id="18" class="alphabet">R</button>
</td>
<td>
<button type="button" onclick="guess('S')" id="19" class="alphabet">S</button>
</td>
<td>
<button type="button" onclick="guess('T')" id="20" class="alphabet">T</button>
</td>
<td>
<button type="button" onclick="guess('U')" id="21" class="alphabet">U</button>
</td>
<td>
<button type="button" onclick="guess('V')" id="22" class="alphabet">V</button>
</td>
<td>
<button type="button" onclick="guess('W')" id="23" class="alphabet">W</button>
</td>
<td>
<button type="button" onclick="guess('X')" id="24" class="alphabet">X</button>
</td>
<td>
<button type="button" onclick="guess('Y')" id="25" class="alphabet">Y</button>
</td>
<td>
<button type="button" onclick="guess('Z')" id="26" class="alphabet">Z</button>
</td>
</tr>
</table>
</div>
If you want all the letters that have been guessed to show up in your div, then you could modify displayLetter
to first read what is in #wordGuess
and append the letter that has just been guessed to that list, then write that information to #wordGuess
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With