没有技术含量,只是用来练习代码逻辑的。为了代码结构清晰,我把逻辑控制部分写在全局变量里,用户界面操作封装在UI对象里,大概就这样了。仅供参考。工作时候,我的编码风格有人吐槽太乱了,所以我想试着写一个不是那么乱的东西出来。。
代码如下:
<HTML>
<head>
<title>2048 DEMO</title>
<meta charset='utf-8' />
<!--
708616 javascript present
http://treemonster.sinaapp.com
1696292264@qq.com
-->
<head>
<div id='box'>
MSIE is SB
<script>
//全局方法用于逻辑控制
function x4(n){
var t=[];
while(n-->0)t.push([]);
return t;
}
function xx(f){
for(var i=0;i<UI.nw;i++){
for(var j=0;j<UI.nw;j++){
f(i,j);
}
}
}
function make(n){
return {
number:n,
moveStep:0,
newNumber:n,
needKill:0
};
}
function tran(_arr,md){
var undo=x4(UI.nw);
var out=x4(UI.nw);
var ud=UI.undo;
if(ud.push(undo)>32)ud.shift();
for(var i=0;i<UI.nw;i++){
var t=[],o=md%2^1;
for(var k=0;k<UI.nw;k++){
undo[i][k]=_arr[i][k].number;
if(md<3)t.push(_arr[i][k]);else t.push(_arr[k][i]);
}
o && t.reverse();
t=trans(t);
if(o)t[0].reverse(),t[1].reverse();
for(var j=0;j<UI.nw;j++){
var x=i,y=j;
if(md>2)x=j,y=i;
_arr[x][y]=t[0][j];
out[x][y]=t[1][j];
}
}
return [_arr,out];
}
function trans(arr){
for(var i=0,m=0;i<UI.nw;i++){
新闻热点
疑难解答
图片精选