# 2048 ::: details 目录 [[toc]] ::: 规则 游戏画布大小 4 * 4 初始化 两个方块 数字为2 可以上下左右移动,相同数字叠加(任意两个格子合并后,新增分数为合并后格子的值),叠加颜色变化 移动的同一行,或同一列相同的可以叠加 若所有数字都在同一侧,则操作无反应 eg:都在左侧,操作左移,无反应 每次移动的时候,若有空格,操作的相反方向则可以生出来一个格子2 随机生成数字,如何去判断随机生成的位置,位置要求为空。 #### 生成小方格算法 1. 选择在哪行/列生成数字:当用户左移合成时,则选择在最右侧一列生成数字; 当用户上移合成时,则选择在最下侧一行生成数字;其他情况以此类推 2. 在这行/列的4个位置中哪个位置生成数字: a)将这行/列取出,有数字的记录数字,无数字的记为0,遍历每一项,将为0项的索引记录出来 b)在这些索引中随机取一项,作为生成数字的位置 3. 将数字2 根据第一步获取到的行 以及 第2步 b)获取到的索引填到对应的位置, 按键: wasd,上下左右指令 game over : 画布上没有空格,并且所有的数字都无法叠加 预判:执行上下左右移动,是否融合,如果都无法叠加,则结束