俄罗斯方块
游戏也兼容移动终端。这个游戏的难点在于如何打开盒子,实现的
方法是将方块放入二维数组,然后逆时针旋转二维数组。
还有其他的方法,如直接使用全局变量来表示方向,以及在转弯时根据这个变量打开框,但是代码需要编写更多的内容。
图书馆
搜索中有一篇关于算法的文章,…看软木塞:
游戏
截图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提示和引导;
在线演示:开放