制作一个javascript hangman游戏,我无法将我的功能应用于重复的字母

时间:2015-01-23 22:16:14

标签: javascript

关于脚本的所有内容现在都很有用,除非这个单词中有重复的字母。如果是这样,那么它只会显示第一个字母。例如,如果随机词是"看"它会显示如下" lo k"。

不幸的是,这里唯一的其他相关javascript hangman问题是一个脚本,它实际上没有重复的字母问题。供参考:how to deal with repeated letters in a javascript hangman game。任何人都可以帮我解决重复的信件问题吗?谢谢!

我的HTML:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <script src="js/jquery-1.11.2.min.js"></script>
    <script src="js/jquery-1.11.2.js"></script>
    <link rel="stylesheet" href="css/main.css">
    <title>Hang a Blue Devil</title>
  </head>
  <body>
    <div class="wrapper">

        <h1 class="title">Hangman</h1>
        <h2 class="attempt-title">You have this many attempts left: </h2>

      <ul class="hangman-word">
        <li class="tester"></li>
        <li class="tester"></li>
        <li class="tester"></li>
        <li class="tester"></li>
        <li class="tester"></li>
        <li class="tester"></li>
      </ul>

        <h3 class="hangman-letters"></h3>

      <input class="text-value" type="text" maxlength="1" onchange="setGuess(this.value)">
      <button class="text-button" onclick="checkGuess()"></button>

        <p class="letters-guessed"></p>

    </div>
  </body>
  <script src="js/hangman.js"></script>
</html>

我的JS:

var hangmanWords = [
  "the","of","and","a","to","in","is","you","that","it","he",
  "was","for","on","are","as","with","his","they","I","at","be",
  "this","have","from","or","one","had","by","word","but","not",
  "what","all","were","we","when","your","can","said","there",
  "use","an","each","which","she","do","how","their","if","will",
  "up","other","about","out","many","then","them","these","so",
  "some","her","would","make","like","him","into","time","has",
  "look","two","more","write","go","see","number","no","way",
  "could","people","my","than","first","water","been","call",
  "who","oil","its","now","find","long","down","day","did","get",
  "come","made","may","part"
];

// declared variables

var randomNumber = Math.floor(Math.random() * 100);
var randomWord = hangmanWords[randomNumber];
var underscoreCount = randomWord.length;
var underscoreArr = [];
var counter = randomWord.length +3;
var numberTest = 0;
var lettersGuessedArr = [];


var lettersGuessedClass = document.querySelector('.letters-guessed');
var li = document.getElementsByClassName('tester');
var textValue = document.querySelector('.text-value');
var attemptTitle = document.querySelector('.attempt-title');
var hangmanWordClass = document.querySelector('.hangman-word');
var hangmanLettersClass = document.querySelector('.hangman-letters');

// actions

attemptTitle.innerHTML = "You have this many attempts left: " + counter;
console.log(randomWord);

function setGuess(guess) {
  personGuess = guess;
}

for (i=0;i<underscoreCount;i+=1) {
  underscoreArr.push("_ ");
  underscoreArr.join(" ");
  var underscoreArrString = underscoreArr.toString();
  var underscoreArrEdited = underscoreArrString.replace(/,/g," ");
  hangmanLettersClass.innerHTML = underscoreArrEdited;
}

function pushGuess () {
      lettersGuessedArr.push(personGuess);
      var lettersGuessedArrString = lettersGuessedArr.toString();
      var lettersGuessedArrEdited = lettersGuessedArrString.replace(/,/g," ");
      lettersGuessedClass.innerHTML = lettersGuessedArrEdited;
}

function checkGuess() {
  for (var i=0;i<randomWord.length;i+=1) {
    if (personGuess === randomWord[i]) {
        console.log(personGuess);
        numberTest = i;
        li[i].textContent = randomWord[i];
        i += 20;
        textValue.value= "";
    } else if ((randomWord.length - 1) > i ) {
        console.log("works");
    } else {
        pushGuess();
        counter -= 1;
        attemptTitle.innerHTML = "You have made this many attempts: " + counter;
        textValue.value= "";
    }
  }
};

我的垃圾箱: http://jsbin.com/dawewiyipe/4/edit

1 个答案:

答案 0 :(得分:0)

你有一些不属于的代码:

i += 20;

我把它取出来了,问题就消失了(循环用于检查每个字符,+=20打破了检查每个字符的过程)

function checkGuess() {
  for (var i=0;i<randomWord.length;i+=1) {
    if (personGuess === randomWord[i]) {
        console.log(personGuess);
        numberTest = i;
        li[i].textContent = randomWord[i];
        textValue.value= "";
    } else if ((randomWord.length - 1) > i ) {
        console.log("works");
    } else {
        pushGuess();
        counter -= 1;
        attemptTitle.innerHTML = "You have made this many attempts: " + counter;
        textValue.value= "";
    }
  }
}

http://jsbin.com/noxiqefaji/1/edit