Javascript 如何将按下的键与存储的数组进行比较,然后替换另一个数组中的字母

Javascript 如何将按下的键与存储的数组进行比较,然后替换另一个数组中的字母,javascript,html,Javascript,Html,好的,我知道标题让人困惑,所以这里是解释 这是一项家庭作业,我完全被这项任务困住了 我正在创建一个简单的刽子手游戏,甚至让计算机从列表中随机选取一个单词(当前代码将列表设置为1项,而我正在修复其他几个bug) 这就是我要问的。在第45行,我试图将LettersGuesed中存储的字母与randomWord中存储的值进行比较。如果该值与randomWord数组中的一个字母匹配,则将其打印到HTML文档中,如果不匹配,则继续允许用户尝试,直到达到0为止。 我尝试了一个带有嵌套if的for循环,但这种

好的,我知道标题让人困惑,所以这里是解释

  • 这是一项家庭作业,我完全被这项任务困住了
  • 我正在创建一个简单的刽子手游戏,甚至让计算机从列表中随机选取一个单词(当前代码将列表设置为1项,而我正在修复其他几个bug)
  • 这就是我要问的。在第45行,我试图将LettersGuesed中存储的字母与randomWord中存储的值进行比较。如果该值与randomWord数组中的一个字母匹配,则将其打印到HTML文档中,如果不匹配,则继续允许用户尝试,直到达到0为止。 我尝试了一个带有嵌套if的for循环,但这种比较从来都不起作用

    我知道我必须做一些代码清理,但首先我想让它工作,然后重构它

    提前谢谢

    //这将包含游戏中要猜测的单词列表
    var wordsToGuess=[“abc”];
    //全局变量//
    //保存分数计数的变量
    var=0;
    风险价值损失=0;
    var GuessRemining=10;
    //空数组存储猜测的字母
    var LettersGuesed=[];
    //空数组存储要猜测的单词
    var randomWord=[];
    var-word=[];
    //按enter键时,将选择一个新词,并将当前单词部分替换为短划线
    window.addEventListener(“键控”,函数(e){
    如果(如keyCode===13){
    字=[];
    start();
    }
    },假);
    //在需要时启动和重新启动游戏的功能
    函数start(){
    //随机数发生器从单词猜测数组中随机选取一个单词
    randomWord=wordsToGuess[Math.floor(Math.random()*wordsToGuess.length)];
    console.log(randomWord);
    //这将为所选单词的字母数添加破折号
    for(var i=0;i
    
    刽子手游戏
    卡片标题
    这是我的星球大战刽子手游戏。这里是规则…猜猜字母,然后试着赢。所有单词都可以来自任何《星球大战》电影,但仅限于电影和卡通节目(不包括书籍)中的角色。按ENTER键开始。
    

    这个专栏将保存我的图片 这一方将以比赛的方式获胜

    wins: 0

    损失: 0


    当前单词:

    ""

    猜字母:

    ""

    剩余猜测:

    10

    版权所有Roberto Benites 2018
    我会将正确的单词放入一个变量中,循环遍历其中的每个字符,然后将正确单词中的每个字符放入正确的单词数组。当用户输入字母时,您可以循环遍历正确的单词数组,并检查该字母是否在正确的单词数组中。如果是的话。将它放入一组正确的猜测字母中。如果不是。将它放入一组猜错的字母中。还要记住,您猜测的字母可能多次出现在正确的单词数组中。您还需要检查猜测剩余==0,如果猜测的字母错误,还需要删除绞刑架的一部分。不过,这个基本逻辑应该将正确的字母和错误的字母分成两个单独的数组,您需要对这两个数组执行更多的逻辑。您还需要在正确的位置显示正确的字母,这应该不会太棘手。祝你好运,我希望这会有所帮助

    var str = "correctWord"
    var word = [];
    
    for (var i = 0; i < str.length; i++) {
    word.push(str.charAt(i));
    }
    for(var i =0; i< word.length; i++)
    {
     if(i == guessedletter)
     {
       correctlettersGuessed.push(i);
     }
     else
     {
      wrongGuessedLetter.push(guessedletter);
     }
     guessesRemaining--; 
    
    
    }
    
    var str=“correctWord”
    var-word=[];
    对于(变量i=0;i
    Hie!试试这个:

    可能不是最优的,但可以根据需要工作。

    HTML(与您的相同,除了id='guesses'元素和'Press ENTER…'文本外):

    
    刽子手游戏
    卡片标题
    这是我的星球大战刽子手游戏。这里是规则…猜猜字母,然后试着赢。所有单词都可以来自任何《星球大战》电影,但仅限于电影和动画片中的角色(不包括书籍)。按回车键开始!
    

    这个专栏将保存我的图片 这一方将以比赛的方式获胜

    wins: 0

    损失: 0


    当前单词:

    ""

    猜字母:

    ""

    剩余猜测:

    10

    <html lang="en"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Hangman-Game</title> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" type="text/css" media="screen" href="../assets/css/style.css" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> <script src="../assets/Javascript/game.js"></script> </head> <body> <div class="card mb-3"> <img class="card-img-top" src="../assets/images/Star_Wars_Logo.png" alt="Card image cap"> <div class="card-body"> <h5 class="card-title">Card title</h5> <p class="card-text">This is my StarWars Hangman Game. Here are the rules...just guess letters and try to win. All words can come from any StarWars movie but will be limited to characters in the movies and Cartoon shows (not including books). <span id='status' style='color: red;'>Press ENTER to start!</span> </p> </div> </div> <div class="container"> <div class="row"> <div class="col"> This column will hold my images </div> <div class="col"> This side will hold by game <p class="wins">Wins: <span id="wins">0</span> </p> <p class="losses">Losses: <span id="losses">0</span> </p> <br/> <p>Current Word: </p> <p> <span id="current-word">""</span> </p> <p>Guessed Letters: </p> <p> <span id="guessed-letters">""</span> </p> <p>Guesses Remaining: </p> <p> <span id="guesses">10</span> </p> </div> </div> </div> </div> <footer class="footer position-relative"> <div class="container"> <span class="text-muted">Copyright Roberto Benites 2018</span> </div> </footer> <!--BootStrap links--> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> </body> </html>
    function Game() {
      //VARIABLES
      var _this = this;
      var wins = 0;
      var losses = 0;
      var wordsList = ['stars', 'wars'];
      var messages = {
        off: 'Press ENTER to start!',
        on: 'You are playing now!'
      };
    
      //init each game  
      var lettersGuessed;
      var guessesRemaining;
      var status;
      var wordToGuess;
      var resultWord;
    
      //DOM ELEMENTS
      var $gameStatus = document.getElementById("status");
      var $wins = document.getElementById("wins");
      var $losses = document.getElementById("losses");
      var $guessedLetters = document.getElementById("guessed-letters");
      var $leftGuessesCounter = document.getElementById("guesses");
      var $currentWord = document.getElementById("current-word");
    
      //INIT
      this.init = function() {
        setDefaults();
    
        //EVENTS
        window.addEventListener('keyup', begin);
        document.addEventListener('keyup', play);
    
        //to begin the game
        function begin(e) {
          if(e.keyCode === 13 && status === 'off') {
            status = 'on';
            render('status');
            render('resultWord');
            render('lettersGuessed');
            render('guessesRemaining');
          }
        }
    
        function play(e) {
          if(status === 'on') {
            start(e);
          }
        }
      };
    
      //SET DEFAULTS
      function setDefaults() {
        lettersGuessed = [];
        render('lettersGuessed');
        guessesRemaining = 10;
        render('guesses');
        status = 'off';
        render('status');
        wordToGuess = wordsList[Math.floor(Math.random() * wordsList.length)];  
        //word with letters that player has found
        resultWord = new Array(wordToGuess.length + 1).join('_').split('');
      };
    
      //START
      function start(e) {
        if(status === 'on') {
          var code = e.keyCode
          //check if it is a char
          if(code > 64 && code < 91) {
            var char = e.key;
            //check if char was already named
            if(lettersGuessed.indexOf(char) === -1) { 
              lettersGuessed.push(char);
              render('lettersGuessed');
              //if char is in wordToGuess
              if(wordToGuess.indexOf(char) !== -1) {
                for(var i = 0; i<wordToGuess.length; i++) {
                  if(wordToGuess[i] === char) resultWord[i] = char;
                }
                render('resultWord');
                //check if won
                if(wordToGuess === resultWord.join('')) {
                  wins++;
                  render('wins');
                  alert('You\'ve won!');
                  setDefaults();
                }
              } else {
                guessesRemaining--;
                render('guesses');
                if(guessesRemaining === 0) {
                  losses++;
                  render('losses');
                  alert('You\'ve lost!');
                  setDefaults();
                }
              }            
            } else {
              alert('You\'ve tried this character already!');
            }          
          } else {
            console.log('It\'s not a character!');
          }
        }
      };
    
      //RENDER
      function render(el) {
        switch(el) {
          case 'status':
            $gameStatus.innerText = messages[status];
            break;
          case 'resultWord':
            $currentWord.innerText = resultWord.join(' ');
            break;
          case 'guesses':
            $leftGuessesCounter.innerText = guessesRemaining;
            break;
          case 'lettersGuessed':
            $guessedLetters.innerText = lettersGuessed.join(',');
            break;
          case'wins':
            $wins.innerText = wins;
          case'losses':
            $losses.innerText = losses;
        }
      };
    }; 
    
    new Game().init();