原版的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