JavaScript 函数 - 图像数组和带有输入类型的答案数组

标签 javascript html arrays random

当用户输入正确答案时,我需要使用随机图像数组及其答案制作一个问题游戏。

   <! DOCTYPE html>
  <html>
  <title>
    Guess the CharToon 
</title>
<head>
        <LINK rel="stylesheet" type="text/css" href="F:\ANGELA\MM1\CHARTOON\CSS\samp.css">      
    <div id="timer" style="padding: 1%;background-color: white;border-radius: 1%;color: black;font-size: 30;font-family: aero; position: absolute;top: 75%;left: 85%;"></div>




</head>
<body>

   <h1>From what movie this<br>&nbsp; place can be found?</h1>        
   <p id="count"></p>  
   <form>

    <img id="pic" class="jpg" src="Nigel Uno.png">

  <input type="text" id="anss" class="type1" value="" ></input>
<button class="type2" value="submit" onclick="sub()">Submit</button>
</form>
     <a class="back2" href="F:\ANGELA\MM1\CHARTOON\HTML\HARD3.html"><img src="F:\ANGELA\MM1\CHARTOON\IMAGES\MENU\back.png" width="150" height="150"></a>

   </body>
    <audio src="F:\ANGELA\MM1\CHARTOON\SOUNDS\Main.mp4" autoplay loop hidden>     </audio>
   </html>

这是我的脚本:

        <script>
     var Imagearray = [];
     Imagearray[0] = "Nigel Uno.png";
    Imagearray[1] = "perry.jpg";
     Imagearray[2] = "BOOTS.jpg";
     Imagearray[3] = "SPONGEBOB.jpg";


var a= Math.floor(Math.random()* Imagearray.length);


var anw = [];
anw[0] = "nigel"; 
anw[1] = "perry"; 
anw[2] = "boots";
anw[3] = "sponge";  

var scor = 2;
  function sub()
{
var correct = 0; 
if (a == 0)
 {

var ans = document.getElementById('anss').value;
if (ans == anw[a] )
{

    a= Math.floor(Math.random() * Imagearray.length);
    document.getElementById("pic").src = Imagearray[a];
    document.getElementById("anss").value = "";
    document.getElementById("count").innerHTML= scor + "  " +"/5";
    correct == 1;
    scor++;

}
else
{
    if (correct == 0 )
    {
        hideass++;
     document.getElementById("anss").value = null;

    }
    if (ans == ""){
        hideass = 0;
    }


   }




   }

if (a == 1)
{

var ans = document.getElementById('anss').value;
if (ans == anw[a])
{

    a= Math.floor(Math.random() * Imagearray.length);
    document.getElementById("pic").src = Imagearray[a];
    document.getElementById("anss").value = "";
    document.getElementById("count").innerHTML= scor + "  " +"/5";
    correct = 1;
    scor++;


}
else
{
    if (correct == 0  )
    {
        hideass++;
        document.getElementById("anss").value = null;   
    }
    if (ans == ""){
        hideass = 0;
    }
    }



  }
if (a == 2)
{

var ans = document.getElementById('anss').value;
if (ans == anw[a])
{

    a= Math.floor(Math.random() * Imagearray.length);
    document.getElementById("pic").src = Imagearray[a];
    document.getElementById("anss").value = "";
    document.getElementById("count").innerHTML= scor + "  " +"/5";
    correct = 1;
    scor++;


}
else
{
    if (correct == 0 )
    {
        hideass++;
        document.getElementById("anss").value = null;   
    }
     if (ans == ""){
        hideass = 0;
    }
}


     }

     if (a == 3)
 {

var ans = document.getElementById('anss').value;
if (ans == anw[a])
{

    a= Math.floor(Math.random() * Imagearray.length);
    document.getElementById("pic").src = Imagearray[a];
    document.getElementById("anss").value = "";
    document.getElementById("count").innerHTML= scor + "  " +"/5";
    correct = 1;
    scor++;


}
else
{
    if (correct == 0 )
    {
        hideass++;
        document.getElementById("anss").value = null;

    }
    if (ans == ""){
        hideass = 0;
    }
    }



  }

  if (Imagearray.length == 3)
 {
window.location.innerHTML = ClearEasy();
}


}

  window.onload = function timerx(){
  var sec = 30;
  setInterval(function(){
 if (pause == 0)
 {
  document.getElementById("timer").innerHTML = sec + " " + "Seconds" ;
 sec--;
 }
  if (sec < 0) {    
        sec = 0;
        window.location.assign("Times_up_Easy1.html");
   sec = 30;
  }
   },1000);
   }

 </script>

我尝试了很多方法,但还是不知道。游戏的主要目标是图像与输入框一起显示,用户需要正确回答并添加分数并转到另一个随机图像。因此,我需要使用随机图像数组和该图像的答案数组,当用户输入正确答案时,分数加 1。

最佳答案

由于您还没有真正说出您的具体问题是什么(您应该有,如 https://stackoverflow.com/help 中提到的),因此我将尝试提供一些帮助,但不会真正解决问题。

您的代码存在许多问题,包括(但可能不限于)

  • 为每个答案提交一个表单 - 这重新加载页面并 删除您拥有的任何状态/进度信息。
  • 大量冗余/重复代码。
  • 与较长的变量名称相比,现在可以节省您更少的打字时间 当您(或其他人)将来查看代码时,这会拯救您。
  • 将相关信息分成 2 个数组 - 不阅读代码,这不是 立即清楚(尽管可以猜测)它们是相关的。
  • 计时器处理程序似乎依赖于不存在的变量(暂停)

还需要考虑的是暂停游戏的方法 - 通过将变量设置为 true 或 false。这是非常好的和功能性的,但是 - 它有一个缺点,就是让计时器保持运行,每秒忠实地触发一次。它还要求您在每次调用处理程序时检查标志的状态。如果保留 SetInterval 的结果,则可以在调用 ClearInterval 中使用它 - 这将停止计时器、暂停游戏并减少能耗。当然,如果您决定采用这种方法,则必须添加额外的代码来使用计时器进行猴子操作。

下面是一些旨在解决项目符号列表中上述每个问题的代码(我不费心添加和实现暂停功能):

var currentAnswerIndex;
var currentScore=0;

var answerObjs =
[
	{ answer: "nigel", file: "Nigel Uno.png"},
	{ answer: "perry", file: "perry.jpg"},
	{ answer: "boots", file: "boots.jpg"},
	{ answer: "sponge", file: "spongebob.jpg"}
];

function byId(id){return document.getElementById(id);}

window.addEventListener('load', onDocLoaded, false);

function onDocLoaded(evt)
{
	randomizeQuestion();
	//initTimer(10);
}

function initTimer(secondsBeforeTimeout)
{
	var secondsRemaining = secondsBeforeTimeout;
	const msPerSecond = 1000;
	var timerId = setInterval(intervalHandler, 1*msPerSecond);

	function intervalHandler()
	{
		if (gameIsPaused == false)
		{
			document.getElementById("timer").innerHTML = secondsRemaining + " " + "Seconds" ;
			secondsRemaining--;
		}
		if (secondsRemaining < 0) 
		{    
			window.location.assign("Times_up_Easy1.html");
		}
	}
}

function randomizeQuestion()
{
	currentAnswerIndex = Math.floor( Math.random() * answerObjs.length );
	byId('questionPic').src = answerObjs[currentAnswerIndex].file;
	// for debugging purposes
	console.log( "Current answer is: " + answerObjs[currentAnswerIndex].answer );
}

function checkAnswer()
{
	var usersAnswer = byId('questionAnswer').value;
	if (answerObjs[currentAnswerIndex].answer == usersAnswer)
	{
		currentScore++;
		byId('currentScore').textContent = currentScore;
		randomizeQuestion();
	}
	else
	{
	}
	byId('questionAnswer').value = '';
}
<h1>Which movie contains this location?</h1>
<img id='questionPic'/><br>
<input type='text' id='questionAnswer'/>
<button id='checkAnsBtn' onclick='checkAnswer();'>Check Answer</button>(<span id='currentScore'>0</span>/5)

关于JavaScript 函数 - 图像数组和带有输入类型的答案数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877770/

相关文章:

javascript - 循环浏览 jQuery 灯箱照片

javascript - 在第二次保存操作中未调用子文档的 Mongoose 预保存中间件

java - 通过数组搜索时出现 NullPointerException 错误

javascript - 有没有办法知道 SVG 元素何时调整大小(例如调整大小事件)?

html - <输入类型 ="number"> 在 IE10 中不工作

java - boolean 解释

php - Javascript:如何替换[]和“?

javascript - jQuery Easy UI + treegrid + 复选框

javascript - 在另一个 ng-repeat 中使用 ng-repeat

html - 从不透明度到灰色的计算?