📜  使用 JavaScript 创建反射游戏

📅  最后修改于: 2022-05-13 01:56:18.361000             🧑  作者: Mango

使用 JavaScript 创建反射游戏

反射游戏是一个简单有趣的游戏,可以衡量你的反应速度。制作和理解非常简单。我们将设计一个反射游戏来计算你的反应速度。规则很简单,当你看到背景颜色的变化时按下停止按钮,你这样做的时间就是你的速度。
游戏提供多种颜色供您选择。与较慢的响应相比,较快的响应将显示出更好的赞美引用。
因此,让我们从基本的 HTML 布局开始。
HTML 布局:
HTML 布局定义了页面的外观。这部分完全取决于你的创造力。请记住创建一个空白的白色背景,以便更改可见。
其他需要的元素是:

  1. 包含游戏名称和一些其他信息的标题。
  2. 一个表单元素,可以包括从下面选择的选项。这是必需的,以便用户可以从许多选项中选择所需的特定颜色。
  3. 两个按钮:一个用于开始游戏,另一个用于按下停止按钮。

代码:


  

    Reflex Game

  

    
      

Reflex Game

      
        
            

Test your Response time!

        
        
            

How To Play

            

Click on "Start" first, and wait until the                background color changes. As soon as it               changes, hit "stop!"             

               
            
                Change background color to:                                  
                
                                                 
        
  

笔记:
这是最基本的 HTML 布局。您可以在其中添加或删除任何其他部分。
CSS样式:
您可以尽可能添加自己的自定义 CSS。在这里,我将只为按钮添加一些基本的 CSS。
代码:


游戏主要逻辑:
游戏的主要逻辑是使用 JavaScript 定义的。这里使用的 JavaScript 也很基础,只需一点 JavaScript 知识就可以理解这一点。

我们将为这款游戏的运行制作 5 个基本功能:
第1步:
开始游戏。此函数需要启动按钮。一旦用户按下开始按钮,该函数将被执行。

function startTest()
{
    document.body.style.background=document.response.bgColorChange.options[
document.response.bgColorChange.selectedIndex].text;
    bgChangeStarted=true;
    startTime=new Date();
}

第2步:
下一个函数将是 remark()函数。此函数将包括游戏完成时显示的备注。

function remark(responseTime)
{
    var responseString="";
    if (responseTime < 0.20)
        responseString="Well done!";
    if (responseTime >= 0.30 && responseTime < 0.20)
        responseString="Nice!";
    if (responseTime >=0.40 && responseTime < 0.30)
        responseString="Could be better...";
    if (responseTime >=0.50 && responseTime < 0.60)
        responseString="Keep practicing!";
    if (responseTime >=0.60 && responseTime < 1)
        responseString="Have you been drinking?";
    if (responseTime >=1)
        responseString="Did you fall asleep?";
  
    return responseString;
}

第 3 步:
下一个 stopTest()函数将在按下停止按钮时执行。按下停止按钮可以执行 3 个选项:
一、成功完成,告诉响应时间。
其次,如果用户在按下开始按钮之前按下停止按钮。
第三,如果用户在改变颜色之前按下停止按钮。

function stopTest()
{
    if(bgChangeStarted)
    {
        endTime=new Date();
        var responseTime=(endTime.getTime()-startTime.getTime())/1000;
  
        document.body.style.background="white";       
        alert("Your response time is: " + responseTime + 
" seconds " + "\n" + remark(responseTime));
        startPressed=false;
        bgChangeStarted=false;
    }
    else
    {
        if (!startPressed)
        {
            alert("press start first to start test");
        }
        else
        {       
            clearTimeout(timerID);
            startPressed=false;             
            alert("cheater! you pressed too early!");
        }               
    }
}

第4步 :
第四个函数是获得背景变化的随机响应时间。

function randNumber()
{
    randSeed = (randMULTIPLIER * randSeed + randINCREMENT) % (1 << 31);
    return((randSeed >> 15) & 0x7fff) / 32767;
}

最后一步:
最后一个函数是确保启动按钮不被按下两次。

function startit()
{
    if(startPressed)
    {
        alert("Already started. Press stop to stop");
        return;
    }
    else
    {
        startPressed=true; 
        timerID=setTimeout('startTest()', 6000*randNumber());
    }
}

最终演示和完整代码:




    
    
    
  
  
    Reflex Game


        

Reflex Game

        
        

Test your Response time!

        
        

How To Play

        

Click on "Start" first, and wait until the  background color changes. As soon as it changes, hit "stop!"         

           
        
        Change background color to:          
        
                             
        
          

输出: