用javascript编写俄罗斯方块块的思路与实例

用javascript编写俄罗斯方块块的思路与实例
俄罗斯方块游戏也兼容移动终端。这个游戏的难点在于如何打开盒子,实现的方法是将方块放入二维数组,然后逆时针旋转二维数组。

还有其他的方法,如直接使用全局变量来表示方向,以及在转弯时根据这个变量打开框,但是代码需要编写更多的内容。

图书馆搜索中有一篇关于算法的文章,…看软木塞:
游戏截图PC端:
移动结束游戏截图:
模板引擎的使用handlebarsjs,为了更好的模块化,也用requirejs的…不好的;

运行以下代码
var
宽度:14,
身高:20,
时间:400
};
Requirejs.config({
BaseUrl:'libs,
路径:{
应用程序:{应用程序}
}
});

Requirejs({应用程序/控制器/控制器

如果(util.ismobile()){
MobileDOM.addDOM();
};
(欺诈);
});

游戏中主要有三种模式:游戏层的模型层、游戏层的模型层、整个游戏界面的模型层。

控制层是用户,在游戏的开始按钮,如果PC开始,游戏,keydown将监控事件,如果移动终端,建立在四个关键的DOM,监控方向键单击事件,事件将使当前数据模型箱旋转显示,视图是事物的第一层,不用管,主要包括随机生成的逻辑块,碰撞检测盒,盒子是淘汰,分数的增加,重新随机生成的盒等:

运行以下代码
定义({应用程序/工具功能(利用){ },
/计分模块,游戏的开始将被使用;
var得分{ };
要求({应用程序/模型/得分功能(definescore){ },
得分= definescore;
});

无功startgame =函数(){()
当前输入/禁用的元素;
$(这)Attr(残疾人。
Requirejs({应用程序/模型/数据
初始化块;
块=新块;
VaR地图= { };

当这个框发生变化时,我们使用回调接口来渲染;
block.onupdate(函数(){()
var blockdata = this.get();
将数据格式转换为地图数据;
地图= data.extend(blockdata);
$(#表)。Html(视图(地图));
});

block.testtouch = data.testtouch;

如果元素底部或元素已被主卡不能移动下;
block.onend(函数(){()
这显示当前块/底部。
data.set(地图);
我们需要生成一个 / /盒,newblock可以直接调用;
Block.newBlock();
通过数据计算,如果连接到一行,执行回调,将更新当前的接口分数;
如果他们走到游戏的顶端,游戏就失败了;
data.oncalculate(score.addscore,block.destory.bind(块));
});

现在开始绑定事件。
如果(!Util.isMobile()){
$(窗口),Keydown(功能(EV){
如果(ev.keycode = 37){
block.add(block.moveleft,左);
} else if(ev.keycode = 39){
block.add(block.moveright,右);
} else if(ev.keycode = 40){
block.add(block.movedown,);
} else if(ev.keycode = 38){
block.rotate();
};
});
其他{ }
$(箭头)。TAP(函数(){)
block.rotate();
});
$(箭头)。
block.add(block.movedown,);
});
$(箭头左)。点击(函数(){)
block.add(block.moveleft,左);
});
$(箭头右键)。
block.add(block.moveright,右);
});
};
});
};

/ /的KeyDown事件绑定接口;
无功bindevent =函数(){()
启动
$(#开始)Click(startgame)。
};
向移动终端添加DOM节点,
然后移动终端事件绑定;

返回函数(){
BindEvent();
};
});

游戏的主窗口直接被视为一个二维数组。所有要显示的正方形都是数组中的数据。数据由模板引擎逐一更新以查看。模板如下所示:

运行以下代码
{ { } }这#每

{ { } }这#每
{每个} }

{每个} }
为了使整个内容和提示更漂亮,使用插件zepto.alert提示和引导;

在线演示:开放
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部