您好,欢迎来到源码搜藏!分享精神,快乐你我!提示:担心找不到本站?在百度搜索“源码搜藏”,网址永远不丢失!
  • 首 页
  • 在线工具
  • 当前位置:首页 > 网页特效 > 游戏特效 >

    反应能力测试游戏,你能坚持多久?

    时间:2014-06-08 23:31 来源:互联网 作者:源码搜藏 浏览:收藏 挑错 推荐 打印
    运行代码保存代码复制代码 提示:您可以先修改部分代码再运行,保存代码功能在Firefox下无效。
    • 很有趣的一个反应能力测试游戏,用JS+DIV写的,用鼠标拖动中间的方块躲闪周围方块的围攻,不能碰到其它的方块和超出范围,否则你就死定了,据说美国空军的飞行员至少要坚持2分钟以上才行,不知道你能坚持多久?
    • <SCRIPT language=JavaScript type=text/javascript>
      isNS4 = (document.layers) ? true : false;
      isIE4 = (document.all  &&  !document.getElementById) ? true : false;
      isIE5 = (document.all  &&  document.getElementById) ? true : false;
      isNS6 = (!document.all  &&  document.getElementById) ? true : false;
      var curX, curY, curX2, curY2, boxX, boxY, moving=0, touch=0;
      var gametime=0, started=0, speed;
      var starttime, endtime, finaltime=0; 
      var enemyxdir = new Array(1,1,1,1);
      var enemyydir = new Array(1,1,1,1);
       
      if (isNS4 || isNS6){
      document.captureEvents(Event.MOUSEUP|Event.MOUSEDOWN|Event.MOUSEMOVE);
      }
      document.onmousedown = start;
      document.onmousemove = checkLocation;
      document.onmouseup = stop;
       
      function startclock() {var today = new Date(); starttime = today.getTime();}
      function endclock() {var today = new Date(); endtime = today.getTime();}
      function calctime() {var time = (endtime - starttime - 0)/1000; return time;}
       
      function giveposX(divname) {
       if (isNS4) var posLeft = document.layers[divname].left;
       else if (isIE4 || isIE5) var posLeft = document.all(divname).style.pixelLeft;
       else if (isNS6) var posLeft = parseInt(document.getElementById(divname).style.left + "");
       return posLeft;
      }
       
      function giveposY(divname) {
       if (isNS4) var posTop = document.layers[divname].top;
       else if (isIE4 || isIE5) var posTop = document.all(divname).style.pixelTop;
       else if (isNS6) var posTop = parseInt(document.getElementById(divname).style.top + "");
       return posTop;
      }
       
      function setposX(divname, xpos) {
       if (isNS4) document.layers[divname].left = xpos;
       else if (isIE4 || isIE5) document.all(divname).style.pixelLeft = xpos;
       else if (isNS6) document.getElementById(divname).style.left = xpos;
      }
       
      function setposY(divname, ypos) {
       if (isNS4) document.layers[divname].top = ypos;
       else if (isIE4 || isIE5) document.all(divname).style.pixelTop = ypos;
       else if (isNS6) document.getElementById(divname).style.top = ypos;
      }
       
      function givesize(divname, dimension) {
       var divsize = 0;
        if (dimension == 'y') {
         if (isNS4) divsize = document.layers[divname].clip.height;
         else if (isIE4 || isIE5) divsize = document.all(divname).style.pixelHeight;
         else if (isNS6) divsize = parseInt(document.getElementById(divname).style.height + "");
        }
        else if (dimension == 'x') {
         if (isNS4) divsize = document.layers[divname].clip.width;
         else if (isIE4 || isIE5) divsize = document.all(divname).style.pixelWidth;
         else if (isNS6) divsize = parseInt(document.getElementById(divname).style.width + "");
        }
       
       return divsize;
      }
       
      function checktouching(num) {
       var enemy = "enemy" + num + ""
       var difX = giveposX('box') - giveposX(enemy) - 0; // -0 converts to integer
       var difY = giveposY('box') - giveposY(enemy) - 0;
       
       if (difX > (-1 * givesize('box', 'x'))  &&  difX < givesize(enemy, 'x')  &&  difY > (-1 * givesize('box', 'y'))  &&  difY < givesize(enemy, 'y')) {
        touch = 1;
       }
       else touch = 0;
       
      }
       
      function movenemy(num,step_x,step_y){
       
       var enemy = "enemy" + num + ""
       var enemyx = givesize(enemy, 'x');
       var enemyy = givesize(enemy, 'y');
       
       if (giveposX(enemy) >= (450 - enemyx) || giveposX(enemy) <= 0) {
        enemyxdir[num] = -1 * enemyxdir[num];
        }
       if (giveposY(enemy) >= (450 - enemyy) || giveposY(enemy) <= 0) {
        enemyydir[num] = -1 * enemyydir[num];
        }
       
       var newposx = giveposX(enemy) + (step_x*enemyxdir[num]) + 0;
       var newposy = giveposY(enemy) + (step_y*enemyydir[num]) + 0;
       
       setposX(enemy, newposx);
       setposY(enemy, newposy);
       
       checktouching(num + "");
       if (touch == 1) {
        stop(); reset();
        }
      }
       
      function movenemies() {
       
       gametime = gametime + 1
       
       if (gametime >= 0  &&  gametime < 100) speed = 80;
       else if (gametime >= 100  &&   gametime < 200) speed = 60;
       else if (gametime >= 200  &&   gametime < 300) speed = 40;
       else if (gametime >= 300  &&   gametime < 400) speed = 30;
       else if (gametime >= 400  &&   gametime < 500) speed = 20;
       else speed = 10;
       // window.status = "speed:  " + speed + "   gametime: " + gametime;
       
       movenemy(0,-10,12);
       movenemy(1,-12,-20);
       movenemy(2,15,-13);
       movenemy(3,17,11);
       
       setTimeout(movenemies,speed);
      }
       
      function start(e) {
       
       if (started == 0) { movenemies();  startclock();  started = 1; }
       
       curX = (isNS4 || isNS6) ? e.pageX : window.event.x ;
          curY = (isNS4 || isNS6) ? e.pageY : window.event.y ;
       
       curX2 = eval(curX - 40);
       curY2 = eval(curY - 40);
       
       boxX = eval(curX - 20);
       boxY = eval(curY - 20);
       
       var boxleft = giveposX('box');
       var boxtop = giveposY('box');
       
       if (curX > boxleft  &&  curX2 < boxleft  &&  curY > boxtop  &&  curY2 < boxtop) {
       
        moving = 1;
        setposX('box', boxX);
        setposY('box', boxY);
       
        if (isNS4 || isNS6){
        document.captureEvents(Event.MOUSEMOVE);
        }
       }
      }
       
      function stop(e){
          moving=0;
       if (isNS4 || isNS6){
       document.releaseEvents(Event.MOUSEMOVE);
       }
      }
       
      function reset(e){
          endclock();
       moving=0;
       if (isNS4 || isNS6){
        document.releaseEvents(Event.MOUSEMOVE);
        }
       if (finaltime == 0) {
        finaltime = calctime();
        window.alert('还要努力哦!你只坚持了 ' + finaltime + ' 秒……');
       
      //  var entername = window.confirm('Enter your name?');
      //   if (entername) {
      //   window.open("?" + finaltime,'winwin','width=300,height=500,left=40,top=40,status=1,resizable');
      //   document.location.reload();
      //   }
      //   else document.location.reload();
         document.location.reload();
        }
      }
       
      function checkLocation(e){
        curX = (isNS4 || isNS6) ? e.pageX : window.event.x ;
        curY = (isNS4 || isNS6) ? e.pageY : window.event.y ;
        boxX = eval(curX - 20);
        boxY = eval(curY - 20);
       checktouching('1');
       if (moving == 1  &&  touch == 0){
         setposX('box',boxX);
         setposY('box',boxY);
         if (curY > 69  &&  curX > 69  &&  curY < 381  &&  curX < 381) return false;
         else stop(); reset();
       }
       else if (touch == 1){
       stop(); reset();
       }
       
      }
      </SCRIPT>
    反应能力测试游戏,你能坚持多久?由源码搜藏网整理,转载请注明出处http://www.codesocang.com/texiao/youxitexiao/8627.html
    标签:网站源码