2017-12-23 4 views
0

私は現在、ランダムな乗算の問題を生成する単純な数学ゲームを作っています。今私は複数の選択肢のために私のシャッフルされた答えを別々のdivに配置する方法につきものになっています。あなたがアップし、将来的に頭を発生する可能性のある衝突が大幅にどうすればランダム化された回答の配置を別のdivにすることができますか... Read Post

をいただければ幸いです。ここJavascriptがあります気づいたらまた:

var gameOn = false; 
var score; 
var interval; 
Array.prototype.shuffle = function(){ 
      var i = this.length, j, temp; 
      while(--i > 0){ 
       j = Math.floor(Math.random() * (i+1)); 
       temp = this[j]; 
       this[j] = this[i]; 
       this[i] = temp; 
       }//while loop bracket 
      return this; 
     } 

function stopGame() { 
    gameOn = false; 
    if (interval) { 
    clearInterval(interval); 
    interval = null; 
    }//if interval bracket 
    document.getElementById("startreset").innerHTML = "Start Game"; 
    document.getElementById("time-remaining").style.display = ""; 
}//function stopGame bracket 


//if we click on the start/reset 
document.getElementById("startreset").onclick = function() { 

    //if we are not playing 
    if (gameOn) { 
    stopGame(); 
    }/*if gameOn bracket*/ else { 

     //change mode to playing 
    gameOn = true; 

    //set score to 0 
    score = 0; 

    document.getElementById("scorevalue").innerHTML = score; 

    //show countdown box 
    document.getElementById("time-remaining").style.display = "block"; 
    document.getElementById("startreset").innerHTML = "Reset Game"; 

    var counter = 60; 

    //reduce time by 1sec in loops 
    interval = setInterval(timeIt, 1000); 
    function timeIt(){ 
     document.getElementById("timer-down").innerHTML = counter; 
     counter--; 

     //timeleft? 
     //no->gameover 
     if (counter === 0) { 
     stopGame(); 
     document.getElementById("game-over").style.display = "block"; 
     document.getElementById("game-over").innerHTML = "Game Over" + "<br />" + "<br />" + "Your Score is " + score + "!"; 

     }//if counter bracket 
    }//timeIt function bracket 

     //generate new Q&A 
     generateQA(); 
     function generateQA(){ 
     //this is the first number in the equation 
     var Na = 1+ Math.round(Math.random() * 9); 
     //this is the second number in the equation 
     var Nb = 1+ Math.round(Math.random() * 9); 
     //the correct answer is when you multiply both together 
     correctAnswer = Na * Nb; 
     //these are the randomly generated wrong answers 
     var w1 = 1+ Math.round(Math.random() * 16); 
     var w3 = 1+ Math.round(Math.random() * 22); 
     var w4 = 1+ Math.round(Math.random() * 92); 
     document.getElementById("question").innerHTML = Na + "x" + Nb; 
     console.log(correctAnswer); 



     var myArray = [w1, correctAnswer, w3, w4]; 
     var result = myArray.shuffle(); 

     document.getElementById("box1", "box2", "box3", "box4").innerHTML = result; 

     }//generateQA function bracket 

    }//else statement bracket 
}//startreset button function bracket 

ここではHTMLです:

<!DOCTYPE html> 
<html lang="en"> 

    <head> 
     <title>Math Game</title> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes"> 
     <link rel="stylesheet" href="styling.css"> 
    </head> 

    <body>  
     <div id="title"> 
       The Matheroo 
      </div> 
     <div id="sunYellow"> 
      <!--Because the score value is going to change as the user plays the game we need to place it in a span and refer to it later with some JAVA--> 

      <div id="score"> 
       Score: <span id="scorevalue">0</span> 
      </div> 
      <div id="correct"> 
       Correct! 
      </div> 
      <div id="wrong"> 
       Try Again 
      </div> 
      <div id="question"> 
       <span id="firstInt"></span><span id="secondInt"></span> 
      </div> 
      <div id="instruction"> 
       Click on the Correct Answer 
      </div> 
      <div id="choices"> 
       <div id="box1" class="boxes"></div> 
       <div id="box2" class="boxes"></div> 
       <div id="box3" class="boxes"></div> 
       <div id="box4" class="boxes"></div> 
      </div> 
      <div id="startreset"> 
       Start Game 
      </div> 
      <div id="time-remaining"> 
       Time Remaining: <span id="timer-down">60</span> sec 
      </div> 
      <div id="game-over"> 
       <br /> 
       Game Over 
      </div> 
     </div> 

     <script src="Javascript.js"></script> 
    </body> 
</html> 

答えて

0

あなたが選択することはできませんこの行で行ったように複数の要素がgetElementByIdになっていますdocument.getElementById("box1", "box2", "box3", "box4").innerHTML = result;。複数の要素を選択するには、querySelectorAllを使用します。 しかし、あなたの場合のために、ちょうどこのようにそれを行う:

document.getElementById("box1").innerHTML = result[0]; 
document.getElementById("box2").innerHTML = result[1]; 
document.getElementById("box3").innerHTML = result[2]; 
document.getElementById("box4").innerHTML = result[3]; 

あなたはforループでそれをも行うことができます。

+0

この回答は、あなたが提案したように 'querySelectorAll'を使ってループを書くことで改善できます。 – jmargolisvt

+0

@jmargolisvtこのようにしてquerySelectorAllを使用するにはどうすればよいですか?私はちょうどその.getElementById()をスワップして、それを動作させることができますか、私はTamirNahumによって描かれた個々の結果を行うことに固執する必要があります。 –

+0

@lukesjaafariそれはあなた次第です。コードを少し効率的にすることだけです。 'querySelectorAll'オブジェクトをループする方法と、このメソッドを使用する場合は、それぞれのプロパティでアクションをコミットする方法について読んでください。 – TamirNahum

関連する問題