# 2048 **Repository Path**: khighness/tzfe ## Basic Information - **Project Name**: 2048 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-18 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JS实现2048 (1)首先,把16宫格看成是矩阵的形式 (2)在html中给每个格子添加类名及属性,来记录每个格子的位置 (3)游戏开始时,随机生成两个数字,2或者4,出现在矩阵中任意位置 这部分是通过类名`emptyItem`及`nonEmptyItem`来实现的。 步骤: ① 随机生成一个数字2或者4 ② 获取所有空元素(类名`emptyItem`) ③ 随机选择一个空元素,将生成的数字填充到空元素中,并将类名`emptyItem`移除,添加类名`nonEmptyItem`,即非空元素 ④ 重复①、②、③步,再随机生成一个数字填充到随机的位置。 (4)游戏的核心在于移动 移动有四个方向:上、下、左、右。实现思路如下: ``` 如果触发向左移动   遍历所有非空元素     如果当前元素在第一个位置 不动     如果当前元素不在第一个位置       如果当前元素左侧是空元素 向左移动       如果当前元素左侧是非空元素         如果左侧元素和当前元素的内容不同 不动         如果左侧元素和当前元素的内容相同 向左合并 如果触发向右移动   遍历所有非空元素     如果当前元素在最后一个位置 不动     如果当前元素不在最后一个位置       如果当前元素右侧是空元素 向右移动       如果当前元素右侧是非空元素         如果右侧元素和当前元素的内容不同 不动         如果右侧元素和当前元素的内容相同 向右合并 ``` 向上移动 和 向下移动的思路同上。 (5)判断游戏是否结束 ``` 获取所有元素 获取所有非空元素 如果所有元素的个数 == 所有非空元素的个数   循环遍历所有非空元素     上面元素存在 && (当前元素的内容 == 上面元素的内容) return     下面元素存在 && (当前元素的内容 == 下面元素的内容) return     左边元素存在 && (当前元素的内容 == 左边元素的内容) return     右边元素存在 && (当前元素的内容 == 右边元素的内容) return   以上条件都不满足,Game Over! ```