游戏面板旋转压缩合并更新逻辑
该思维导图描述了游戏面板更新的过程,主要通过按键触发(例如:向上键),依次进行面板转置(`transpose_grid`)、瓷砖压缩(`compress_grid`)和合并(`merge_tiles`)操作。 过程中记录移动状态(`has_moved`),最后再转置回原方向。此方法巧妙地避免了为四个方向编写重复代码,简化了逻辑,提高了效率。
源码
# 游戏面板旋转压缩合并更新逻辑
## 按键触发
- Key: Up
- 其他键
- Key: Down
- Key: Left
- Key: Right
## 操作步骤
- 转置面板
- 函数: `transpose_grid`
- 描述: 将面板旋转90度
- 注意事项: 确保更新前后面板状态一致
- 压缩瓷砖
- 函数: `compress_grid`
- 描述: 将非空瓷砖移动到左侧
- 操作细节
- 循环遍历每一行
- 检查与比较相邻瓷砖
- 合并瓷砖
- 函数: `merge_tiles`
- 描述: 相同数值的相邻瓷砖合并
- 操作细节
- 只合并一次
- 更新合并后的瓷砖值
## 状态记录
- 移动状态: `has_moved`
- 来源:
- `has_compressed`
- `has_merged`
- 更新逻辑
- 如果发生压缩或合并,状态更新为True
## 后处理
- 再次转置面板
- 函数: `transpose_grid`
- 描述: 恢复面板方向
- 确保面板数据结构不变
## 代码逻辑
- 优点:
- 避免为四个方向编写重复代码
- 简化逻辑,增强效率
- 适用场景
- 各种方向移动时
- 多种游戏模式支持
图片