2)旋转, 需要数理逻辑, 一个点相对另外一个点旋转90度的问题。

3)定时和监听键盘事件机制让游戏自动运行下去。

//开始

function begin(e){

e.disabled = true;

status = 1;

tbl = document.getElementById("area");

if(!generateBlock()){

alert("Game over!");

status = 2;

return;

}

paint();

timer = setInterval(moveDown,1000);

}

document.οnkeydοwn=keyControl;

程序过程

1)用户点开始->构造一个活动图形, 设置定时器。

//当前活动的方块, 它可以左右下移动, 变型。当它触底后, 将会更新area;

var activeBlock;

//生产方块形状, 有7种基本形状。

function generateBlock(){

activeBlock = null;

activeBlock = new Array(4);

//随机产生0-6数组,代表7种形态。

var t = (Math.floor(Math.random()*20)+1)%7;

switch(t){

case 0:{

activeBlock[0] = {x:0, y:4};

activeBlock[1] = {x:1, y:4};

activeBlock[2] = {x:0, y:5};

activeBlock[3] = {x:1, y:5};

break;

}

//省略部分代码..............................

case 6:{

activeBlock[0] = {x:0, y:5};

activeBlock[1] = {x:1, y:4};

activeBlock[2] = {x:1, y:5};

activeBlock[3] = {x:1, y:6};

break;

}

}

//检查刚生产的四个小方格是否可以放在初始化的位置.

for(var i=0; i<4; i++){

if(!isCellValid(activeBlock[i].x, activeBlock[i].y)){

return false;

}

}

return true;

}

2)每次向下移动后, 都检查是否触底, 如果触底了, 则尝试消行。

//消行

function deleteLine(){

var lines = 0;

for(var i=0; i<18; i++){

var j=0;

for(; j<10; j++){

if(area[i][j]==0){

break;

}

}

if(j==10){

lines++;

if(i!=0){

for(var k=i-1; k>=0; k--){

area[k+1] = area[k];

}

}

area[0] = generateBlankLine();

}

}

return lines;

}

3)完了之后再构造一个活动图形, 再设置定时器。

效果图

有待优化

1)设置不同形状方块的颜色。

思路:在创建方块函数内,设定activeBlockColor颜色,七种不同形态方块颜色各异(除了修改generateBlock方法之外,还需要修改paintarea方法。因为一开始考虑不周全,消除一行后,重绘方块的同时将颜色统一,因此可以考虑移除表格n行,然后在顶部增添n行,以保证没消除方块的完整性)。

2)当当前方块下落时,可以提前查看下一个方块。

思路:将generateBlock方法拆分成两部分,一部分用于随机尝试下一个方块,一部分用于缓存当前所要描绘的方块。当当前方块碰到底部被固定后,下一方块开始描绘,同时又再次随机产生新方块。如此反复。

完整HTML源码:

Tetris

得分: 0

php俄罗斯方块代码,JavaScript实现俄罗斯方块游戏过程分析及源码分享_javascript技巧...相关推荐

  1. unity3d游戏2d横版射击游戏完整项目源码分享

    unity3d游戏2d横版射击游戏完整项目源码分享 免费下载地址: 链接:https://pan.baidu.com/s/1YwhEy7DeKIHFU8pBLdJFPg 提取码:3wnx 复制这段内容 ...

  2. unity3d游戏3d局域网联机吃球游戏完整项目源码分享

    unity3d游戏3d局域网联机吃球游戏完整项目源码分享 免费下载地址: 链接:https://pan.baidu.com/s/1APlOCmoK9aUfiVJD48dBQA 提取码:p5nl 复制这 ...

  3. 注册与验证码php源代码,PHP+javascript制作带提示的验证码源码分享

    经常看的别人网站上输完验证码,可以直接判断正确与否,感觉体验非常不错,赶紧给自己网站也加上,源码分享给大家 html代码: 简单验证码 验证码: 看不清 请输入验证码 JS代码: function c ...

  4. c语言程序员写贪吃蛇代码28,厉害了,程序员28行代码写贪吃蛇游戏,附源码!...

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  5. 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  6. c++ 游戏_C/C++编程笔记:C语言实现连连看游戏,项目源码分享

    本篇文章分享看题目就知道是写给初学者的,学的比较好的小伙伴也可以将自动算法等一些知识给加进去,希望对大家有帮助! 好了,当我们所有的准备工作做好之后,我们就可以来编写我们的C语言连连看游戏了! 其实这 ...

  7. 强大的Python分析5000+抖音大V,几行代码发现大家都喜欢这类视频【源码分享】

    最近,小F在知乎上看到一个关于抖音的问题. 里面提到了,目前我国人均每天刷短视频110分钟. 看这数据,看来小F又被平均了. 不过老实说,只要一打开抖音,小F确实是有一种停不下来的感觉- 所以还是少刷 ...

  8. 【原创】使用JS封装的一个小型游戏引擎及源码分享

    1 /** 2 * @description: 引擎的设计与实现 3 * @user: xiugang 4 * @time: 2018/10/01 5 */ 6 7 /* 8 * V1.0: 引擎实现 ...

  9. python密码测试代码_python使用正则表达式检测密码强度源码分享

    #encoding=utf-8 #------------------------------------------------------------------------------- # N ...

最新文章

  1. String,StringBuffer,StringBuilder区别
  2. Spark On K8S(Standalone模式部署)
  3. 动态让控件超出屏幕_JAVA浏览器控件JxBrowser v7.5上线!更轻松处理Dynamic Favicons...
  4. GDCM:从ELSCINT1读取Wave Information标签的测试程序
  5. 滤波器开发之三:基于算数平均的阶进平滑滤波器
  6. ARM Cortex M3指令集
  7. 租房管理系统需求分析
  8. Android混淆使用详解
  9. wpsmac和pc版的区别_Mac系统下金山WPS和微软Office 哪个更好更好用
  10. 沟通成本:信任,外包永远的痛——外包实践(65)
  11. 基于TCP/IP的展厅智能中控系统
  12. python实现ks算法_Python计算KS值并绘制KS曲线
  13. ios开发中UIButton设置标题和图片不能同时显示问题解决
  14. 泛函极值问题与变分法
  15. 美国某超市销售数据分析
  16. 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)
  17. vue-element-admin安装指南
  18. css首行缩进字符间距行高_黑暗代码风格的学院:换行,间距和缩进
  19. C++如何实现二进制数据存储为灰度图
  20. 计算机作为信息处理工具 应用于科学研究,计算机2013分春章节试题及答案.doc

热门文章

  1. 脱敏数据的残余风险评估
  2. JavaWeb开发网上商城
  3. 010-WebBuilder-编写可复用模块+阶段实战效果与代码
  4. 我是马云:新入职员工勿批判公司
  5. 本人亲自整理的极客时间设计模式之美的硬核笔记
  6. 关于PR硬件加速报错 错误代码3解决办法
  7. 分布式存储Ceph中的逻辑结构Pool和PG
  8. 这是个什么软件Android,想提高语文水平,不妨试试这几个APP(Android)
  9. Java获取package下所有的class对象(普通文件包和Jar文件包)
  10. iPhone 订阅退款方法