# ===== CodeLab: JavaScript 小游戏⑥:2048 网页版 =====
# 来源: https://aoerliang.dpdns.org/articles/game-js-2048
# 以下代码片段按文章出现顺序拼接, 共 3 段
# ----- 片段 1 (html) -----
2048
2048
# ----- 片段 2 (javascript) -----
function slide(line) {
let a = line.filter(v => v !== 0), b = [];
for (let i = 0; i < a.length; i++) {
if (i + 1 < a.length && a[i] === a[i + 1]) {
b.push(a[i] * 2); score += a[i] * 2; i++;
} else b.push(a[i]);
}
while (b.length < 4) b.push(0);
return b;
}
function moveGrid(dir) { // 0左 1右 2上 3下
for (let i = 0; i < 4; i++) {
let line = dir < 2 ? grid[i].slice() : grid.map(r => r[i]);
if (dir === 1 || dir === 3) line.reverse();
line = slide(line);
if (dir === 1 || dir === 3) line.reverse();
for (let j = 0; j < 4; j++) {
if (dir < 2) grid[i][j] = line[j];
else grid[j][i] = line[j];
}
}
spawn(); render();
}
# ----- 片段 3 (html) -----
2048
2048 方向键移动