# 2048

::: details 目录
[[toc]]
:::

<engine-demo-2048test />

规则 游戏画布大小 4 * 4

初始化 两个方块 数字为2

可以上下左右移动，相同数字叠加（任意两个格子合并后，新增分数为合并后格子的值），叠加颜色变化

移动的同一行，或同一列相同的可以叠加

若所有数字都在同一侧，则操作无反应

eg：都在左侧，操作左移，无反应

每次移动的时候，若有空格，操作的相反方向则可以生出来一个格子2

随机生成数字，如何去判断随机生成的位置，位置要求为空。

#### 生成小方格算法

1. 选择在哪行/列生成数字：当用户左移合成时，则选择在最右侧一列生成数字； 当用户上移合成时，则选择在最下侧一行生成数字；其他情况以此类推

2. 在这行/列的4个位置中哪个位置生成数字：

    a)将这行/列取出，有数字的记录数字，无数字的记为0，遍历每一项，将为0项的索引记录出来

    b)在这些索引中随机取一项，作为生成数字的位置

3. 将数字2 根据第一步获取到的行 以及 第2步 b)获取到的索引填到对应的位置，




按键： wasd，上下左右指令

game over ： 画布上没有空格，并且所有的数字都无法叠加

预判：执行上下左右移动，是否融合，如果都无法叠加，则结束

