为了达到最精简的写法,整个程序的运行是围绕着位操作进行的。
一共用了不到100代码(常规写法),实现了最基本的变形、下落、消除、积分的功能。
操作:
上(变形),下(加速),左(左移),右(右移),空格(落到底)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<style>
GBody {width:241px;height:401px;display:block;background-color:black;}
GSpan {background-color:gray;float:left;width:12px;height:12px;border:4px gray outset;margin:0 1 1 0;overflow:hidden;}
</style>
<script>
//By: X!ao_f QQ:120000512
var G = {
s:0,
f:[],
m:[],
v:[0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0x801,0xFFFF],
d:[[0xCC00],[0x4444,0xF0],[0x8C40,0x6C00],[0x4C80,0xC600],[0x44C0,0x8E00,0xC880,0xE200],[0x88C0,0xE800,0xC440,0x2E00],[0x4E00,0x8C80,0xE400,0x4C40]],
init:function(c){
c = c.appendChild(document.createElement("GBody"));
for(var i=0;i<240;i++){
G.f.push(c.appendChild(document.createElement("GSpan")));
}
document.onkeydown=function(e){G.event(e||window.event,0)};
G.next();
setInterval("G.timeTesk()",500);
},
timeTesk:function(){
if(!G.move(G.x, G.y+1, G.t)){
var s = 0;
for(var i=0;i<20;i++){
G.v[i]=G.v[i]|G.m[i];
if(G.v[i]==0xFFF){
for(var k=i;k>0;k--){
G.v[k] = G.v[k-1];
}
G.s+=++s;
}
}
G.next();
return false;
}
G.draw();
return true;
},
move:function(x,y,t){
var m = [];
for(var k=0;k<4;k++){
m[y+k] = (G.d[G.n][t]>>(3-k)*4&0xF)<<Math.max(x,0)>>-Math.min(x,0);
if(m[y+k] & G.v[y+k]){
return false;
}
}
G.x = x;
G.y = y;
G.t = t;
G.m = m;
G.draw();
return true;
},
next:function(){
var i = 0;
G.n = parseInt(Math.random()*G.d.length);
G.t = parseInt(Math.random()*G.d[G.n].length);
while(!(G.d[G.n][G.t]>>i*4&0xF))i++;
if(!G.move(3, i-3, G.t)){
alert('Game over!');
}
},
draw:function(){
for(var i=0;i<240;i++){
if((G.v[parseInt(i/12)]>>(11-i%12))&0x1||(G.m[parseInt(i/12)]>>(11-i%12))&0x1){
G.f[i].style.visibility = '';
}else{
G.f[i].style.visibility ='hidden';
}
}
document.title = 'score:'+G.s;
},
event:function(e,t){
switch(e.keyCode){
case 37:
G.move(G.x + 1, G.y, G.t);
break;
case 39:
G.move(G.x - 1, G.y, G.t);
break;
case 38:
G.move(G.x, G.y, (G.t + 1) % G.d[G.n].length);
break;
case 40:
G.timeTesk();
break;
case 32:
while(G.timeTesk());
}
}
}
</script>
<body onload='G.init(document.body);'></body>
</html>
分享到:
相关推荐
JavaScript俄罗斯方块是一款经典的编程学习项目,非常适合初学者入门。这个项目主要涉及到以下几个核心知识点: 1. **HTML基础知识**:`a.html` 文件是网页的基本结构,它包含了游戏的界面元素,如游戏区域、得分...
开发者通过编写JavaScript代码实现了游戏规则,并利用事件监听来响应用户的键盘输入,确保游戏的实时性和互动性。 **核心知识点二:HTML结构** 在提供的文件"tetris.html"中,HTML元素构建了游戏界面的基础结构。...
【jQuery 游戏 俄罗斯方块 代码】是一款基于JavaScript库jQuery实现的网页版俄罗斯方块游戏。这个游戏的特色在于其简洁高效的代码实现,通过利用jQuery的事件处理和DOM操作功能,使得开发者可以用相对较少的代码量...
在“javascript俄罗斯方块.zip”这个压缩包中,应该包含了完整的源代码,包括HTML文件、CSS样式表和JavaScript脚本。你可以通过查看这些文件来学习实际的代码实现。同时,这也是一个很好的学习资源,可以帮助你理解...
js俄罗斯方块小游戏实现,源代码打包,喜欢用javascript实现游戏效果代码的朋友可以参考下。
压缩包中的"俄罗斯方块.html"是整个游戏的入口文件,包含了HTML结构、CSS样式和JavaScript代码。HTML用于构建网页的基本结构,CSS负责美化界面,而JavaScript则是游戏逻辑的实现。开发者可能会使用AJAX技术来动态...
在俄罗斯方块源代码中,JavaScript函数可能包括: - `generateBlock()`: 生成新方块的函数,随机选择一种形状并将其放置在屏幕顶部。 - `fallBlock()`: 控制方块下落的定时器函数,根据重力模拟方块下降。 - `...
总的来说,通过实现俄罗斯方块这款游戏,开发者不仅可以巩固JavaScript基础知识,还能提升动态效果处理、DOM操作、算法设计、代码组织和优化等多方面技能,为后续的大型网页游戏开发奠定坚实基础。而"codesc.net"这...
综上所述,这段HTML代码结合JavaScript实现了俄罗斯方块游戏的基本框架,通过定义游戏板、方块数据、颜色方案和关键的游戏逻辑函数,为学习者提供了一个良好的起点,深入理解游戏开发中的各种技术细节。
总的来说,"jsp俄罗斯方块简短代码"项目展示了如何结合JSP和JavaScript的力量来创建一个基本的在线游戏。通过学习这个项目,开发者可以深化对JSP动态网页开发和JavaScript客户端编程的理解,同时也能体会到游戏开发...
参考网络资源,使JavaScript实现的俄罗斯方块游戏,加入C程序自动求解的功能,初步实现了自动求解的算法。
JavaScript 俄罗斯方块是一款经典的基于JavaScript编程的游戏,它主要用于学习和实践面向对象编程中的类概念。在这款游戏中,开发者可以通过创建不同的类来实现游戏的核心功能,如方块、游戏板、分数显示等。以下是...
总的来说,这个jQuery网页版俄罗斯方块游戏项目展现了JavaScript和jQuery在游戏开发中的应用,同时也锻炼了开发者的设计思维和编程技巧。它将基本的HTML、CSS和JavaScript技术与游戏逻辑巧妙结合,为学习和实践Web...
【标题】:“俄罗斯方块C#代码web” 在IT领域,"俄罗斯方块"是一款经典的电子游戏,由阿列克谢·帕基特诺夫在1984年设计。而“C#”是一种现代、面向对象的编程语言,由微软公司开发,广泛应用于Windows平台的软件...
《俄罗斯方块》作为一款全球范围内的经典游戏,自1984年问世至今,它独特的游戏理念和机制依旧在世界各地拥有众多爱好者。游戏以其简单易上手的操作和逐渐增加的难度,成功吸引了各个年龄段的玩家。每当那熟悉的背景...
【标题】"js俄罗斯方块网页游戏代码"所涉及的知识点主要集中在JavaScript编程语言和网页游戏开发上。JavaScript,简称JS,是一种轻量级的解释型编程语言,主要用于客户端的网页脚本,使得用户与网页交互更加动态和...
在这个俄罗斯方块游戏中,可以创建一个“方块”类,包含方块的形状、颜色、位置等属性,以及旋转、下落、碰撞检测等方法。此外,还有“游戏板”类来管理当前的游戏状态,包括判断行是否被填满、清除行并更新分数等。...
方块会从区域上方开始缓慢继续落下。玩家可以以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始...
在本项目中,我们探索的是一个使用纯JavaScript实现的简单版俄罗斯方块游戏。这个项目旨在帮助开发者加深对JavaScript语言的理解,以及如何将其应用于游戏开发。以下是对该项目中涉及的关键知识点的详细说明: 1. *...
俄罗斯方块是大家所熟知的经典游戏,本着试试看的态度,我完成了这个Javascript版,不过美中不足的是在游戏的过程中有可能会出现错误,游戏的时间越长,错误出现的概率越大,针对这个Bug,我无能为力。希望有高手...