当前位置: 首页 > 编程笔记 >

60行js代码实现俄罗斯方块

章宏恺
2023-03-14
本文向大家介绍60行js代码实现俄罗斯方块,包括了60行js代码实现俄罗斯方块的使用技巧和注意事项,需要的朋友参考一下

这是我之前网上看到的,很牛逼的一位大神写的,一直膜拜中

<!doctype html><html><head></head><body>
<div id="box" style="width:252px;font:25px/25px 宋体;background:#000;color:#9f9;border:#999 20px ridge;text-shadow:2px 3px 1px #0f0;"></div>
<script>
var map=eval("["+Array(23).join("0x801,")+"0xfff]");
var tatris=[[0x6600],[0x2222,0xf00],[0xc600,0x2640],[0x6c00,0x4620],[0x4460,0x2e0,0x6220,0x740],[0x2260,0xe20,0x6440,0x4700],[0x2620,0x720,0x2320,0x2700]];
var keycom={"38":"rotate(1)","40":"down()","37":"move(2,1)","39":"move(0.5,-1)"};
var dia, pos, bak, run;
function start(){
  dia=tatris[~~(Math.random()*7)];
  bak=pos={fk:[],y:0,x:4,s:~~(Math.random()*4)};
  rotate(0);
}
function over(){
  document.onkeydown=null;
  clearInterval(run);
  alert("GAME OVER");
}
function update(t){
  bak={fk:pos.fk.slice(0),y:pos.y,x:pos.x,s:pos.s};
  if(t) return;
  for(var i=0,a2=""; i<22; i++)
    a2+=map[i].toString(2).slice(1,-1)+"<br/>";
  for(var i=0,n; i<4; i++)
    if(/([^0]+)/.test(bak.fk[i].toString(2).replace(/1/g,"\u25a1")))
      a2=a2.substr(0,n=(bak.y+i+1)*15-RegExp.$_.length-4)+RegExp.$1+a2.slice(n+RegExp.$1.length);
  document.getElementById("box").innerHTML=a2.replace(/1/g,"\u25a0").replace(/0/g,"\u3000");
}
function is(){
  for(var i=0; i<4; i++)
    if((pos.fk[i]&map[pos.y+i])!=0) return pos=bak;
}
function rotate(r){
  var f=dia[pos.s=(pos.s+r)%dia.length];
  for(var i=0; i<4; i++)
    pos.fk[i]=(f>>(12-i*4)&15)<<pos.x;
  update(is());
}
function down(){
  ++pos.y;
  if(is()){
    for(var i=0; i<4 && pos.y+i<22; i++)
      if((map[pos.y+i]|=pos.fk[i])==0xfff)
        map.splice(pos.y+i,1), map.unshift(0x801);
    if(map[1]!=0x801) return over();
    start();
  }
  update();
}
function move(t,k){
  pos.x+=k;
  for(var i=0; i<4; i++)
    pos.fk[i]*=t;
  update(is());
}
document.onkeydown=function(e){
  eval(keycom[(e?e:event).keyCode]);
};
start();
run=setInterval("down()",400);
</script></body></html>

以上所述就是本文的全部内容,希望大家能够喜欢。

 类似资料:
  • 本文向大家介绍JS和canvas实现俄罗斯方块,包括了JS和canvas实现俄罗斯方块的使用技巧和注意事项,需要的朋友参考一下 效果图: 代码如下: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!

  • 本文向大家介绍原生js实现俄罗斯方块,包括了原生js实现俄罗斯方块的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现俄罗斯方块的具体代码,供大家参考,具体内容如下 效果如下 html css Demo.js game.js local.js remote.js square.js squareFactory.js 更多有趣的经典小游戏实现专题,分享给大家: C++经典小游戏汇总

  • 本文向大家介绍C语言代码实现俄罗斯方块,包括了C语言代码实现俄罗斯方块的使用技巧和注意事项,需要的朋友参考一下 这里为大家敲写一段怎样用C语言实现俄罗斯方块: 首先推荐大家使用CodeBlocks这个软件,方便添加不同的工程。 代码中有很多注释便于理解! 下面是效果图和全部的代码以及注释,大家可以观看并自己新增内容! 1、首先是main.c文件: 2、然后是mywindows.h文件: 3、接下来

  • 本文向大家介绍C语言实现俄罗斯方块源代码,包括了C语言实现俄罗斯方块源代码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C语言实现俄罗斯方块的具体代码,供大家参考,具体内容如下 GitHub:【C语言】实现俄罗斯方块源代码 Head.h Draw.h Init.h game.h main.cpp 配置文件:RockShape.ini 更多关于俄罗斯方块的文章,请点击查看专题:《俄罗

  • 本文向大家介绍C# 实现俄罗斯方块(附源码),包括了C# 实现俄罗斯方块(附源码)的使用技巧和注意事项,需要的朋友参考一下 概述 俄罗斯方块(Tetris)是一款由俄罗斯人阿列克谢·帕基特诺夫发明的休闲游戏,帕基特诺夫爱玩拼图,从拼图游戏里得到灵感,设计出了俄罗斯方块。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。本文简述如何通过C#来实现俄罗斯方块,仅供学习分享使用,如有不足之处,还请指正。

  • 本文向大家介绍Python Pygame实现俄罗斯方块,包括了Python Pygame实现俄罗斯方块的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Python Pygame实现俄罗斯方块的具体代码,供大家参考,具体内容如下 源码: 效果: 更多俄罗斯方块精彩文章请点击专题:俄罗斯方块游戏集合 进行学习。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程