原版的2048,是每两个随机数字不可能一致的,用if判断了每两次生成的数字不一致,且通过改变生成的数字为2,4,8增加了简单,一般,困难的游戏程度,原理大致如下,简单难度每次只可生成一个随机数,并且数值为2,4,8,,8的比例较大,一般难度可生成2个随机数,且只能生成2,4,困难每次都能生成3个数字,且每次生成的数字都不重复,大大增加了游戏的难度和随机性
2017-05-26
关于随机取位置的,有优化了下,基本上循环的很快
var tim = 17 - linshi.length;
while(tim > 0){
if(board[randx][randy] == 0){break;}
randx = parseInt( Math.floor( Math.random() * 4) );//[0-3]
randy = parseInt( Math.floor( Math.random() * 4) );//[0-3]
tim--;
console.log("循环次数为","此次linshi的长度为:",linshi.length);
}
var tim = 17 - linshi.length;
while(tim > 0){
if(board[randx][randy] == 0){break;}
randx = parseInt( Math.floor( Math.random() * 4) );//[0-3]
randy = parseInt( Math.floor( Math.random() * 4) );//[0-3]
tim--;
console.log("循环次数为","此次linshi的长度为:",linshi.length);
}
2017-05-25
老师的这个章节还是有个小bug
if(moveLeft()){//判断是否可以向左移动
setTimeout("generateOneNumber()" , 400) ;//调用随机生成两个数字
isgameover();
}
就是for循环非常快,还动画要200毫秒,所以不但要给绘制格子的函数加个延迟器也要给随机生成的函数加个延迟器
if(moveLeft()){//判断是否可以向左移动
setTimeout("generateOneNumber()" , 400) ;//调用随机生成两个数字
isgameover();
}
就是for循环非常快,还动画要200毫秒,所以不但要给绘制格子的函数加个延迟器也要给随机生成的函数加个延迟器
2017-05-25
那个检测碰撞,我认为在写move的时候,按照最长匹配原则写,就用不着碰撞检测,每个方向都从可以变化的第一个块开始遍历,从他能到的最远的位置开始进行匹配,我这样写出来不加碰撞检测也没有发现bug。也可能只是没有发现而已hhh
2017-04-30