Javascript Hangman - 替换字符串中的字符

时间:2017-05-09 23:09:14

标签: javascript

我在Stack Overflow上看到过有关此主题的类似问题,但我还没有看到任何可以帮助我的具体内容。我的问题是,我似乎无法弄清楚如何用正确猜到的字母替换hiddenWord中的短划线,同时仍保留未猜到字母的短划线。这是我到目前为止所做的,我甚至不确定它是否在正确的轨道上。

    <script type="text/javascript">

// Declaration of Variables 
var wordPool= ["Alf", "MarriedWithChildren", "Cheers", "MASH", "CharlesInCharge", "FmailyTies", "KnightRider", "MagnumPI", "MiamiVice"];
var lives = 6;
var myLetter;
var letter;
var wordChoice;
var hiddenWord;
var i;
var enter;

// Selects word randomly from wordPool[]. Then replaces the letters with "- ".

function selectedWord() {

var number = Math.round(Math.random() * (wordPool.length - 1));

wordChoice = wordPool[number];

for(i = 0; i < wordChoice.length; i++){
    hiddenWord = wordChoice.replace(/./g,"- ");
}
console.log(hiddenWord);
}

// Gives myLetter a value of key pressed. If key is "Enter" selectedWord() initiates 

document.onkeyup = function(event) {

var myLetter = event.key;
    if(myLetter === "Enter"){
        selectedWord();
    }
    console.log(myLetter);
}

</script>

我已经看过jQuery和PHP的一些东西,但我必须在javascript中为类做。任何帮助将不胜感激,如果这已得到解决,请告诉我。

3 个答案:

答案 0 :(得分:0)

尝试 hiddenWord += "- " 而不是替换

或者

hiddenWord += wordChoice[i].replace(/./g,"- ");

答案 1 :(得分:0)

以下是一个例子:

var word = "do this";
var displayWord = [];

for (var i = 0; i < word.length; i++) {//build array
    if (word[i] === " ") {
      displayWord.push(" ");
    } else {
      displayWord.push("-");
    }
  }

function update(userGuess) {//update array
  for (var i = 0; i < word.length; i++) {
    if (word[i] === userGuess) {
      displayWord[i] = userGuess;
    } else {
      displayWord[i] = displayWord[i];
    }
  }
}

//Guess letters
update("h");
update("o");

displayWord = displayWord.join('');//convert to string

alert(displayWord);

检查笔 - https://codepen.io/SkiZer0/pen/VbQKPx?editors=0110

答案 2 :(得分:0)

您可以检查单词字符串中的每个字符,将其与所选字符进行比较并替换它,如果它是相同的字符。

我稍微更改了您的代码以反映您要查找的内容。 同时确保小写所有字符以使播放器更容易。

// Declaration of Variables 
var wordPool= ["Alf", "MarriedWithChildren", "Cheers", "MASH", "CharlesInCharge", "FmailyTies", "KnightRider", "MagnumPI", "MiamiVice"];
var lives = 6;
var myLetter;
var letter;
var wordChoice;
var hiddenWord;
var i;
var enter;

// Change character to selected one
function checkCharacter(n) {
  for(i = 0; i < wordChoice.length; i++){
    console.log(wordChoice[i].toLowerCase() + "==" + n);
    if(wordChoice[i].toLowerCase() == n.toLowerCase()){
      hiddenWord = setCharAt(hiddenWord,i,n);
    }
  }
  console.log("[" + hiddenWord + "]");
}

function setCharAt(str,index,chr) {
    if(index > str.length-1) return str;
    return str.substr(0,index) + chr + str.substr(index+1);
}

// Selects word randomly from wordPool[]. Then replaces the letters with "- ".

function selectedWord() {
  var number = Math.round(Math.random() * (wordPool.length - 1));
  wordChoice = wordPool[number];
  hiddenWord = wordChoice.replace(/./gi,"-");
  console.log(wordChoice + "[" + hiddenWord + "]");
}

// Gives myLetter a value of key pressed. If key is "Enter" selectedWord() initiates 

document.onkeyup = function(event) {
    var myLetter = event.key;
    if(myLetter === "Enter"){
        if(lives == 0){
           selectedWord();
           lives = 6;
         }else{
           lives--;
         }
    }
    console.log(myLetter);
    checkCharacter(myLetter);
}

//Select a random word at start
selectedWord();

我制作了一个可行且可玩的JSfiddle: Check it out here...