头图

数据和显示不分离

如果数据和显示分离,意味着它们要分开存储,这样就要用行和列来做唯一标识。

格子位置只计算一次

格子位置只在初始化的时候计算一次,然后在Grid脚本保存它的初始化位置,如果不保存,就要一直用行和列来做计算。

统一格子逻辑

这个是重点,看了网上的源码,判断能否移动格子、移动格子、游戏是否失败,都是 4 个方向做了逻辑的。这样只会造成代码增加、逻辑难以理解。如果统一了格子逻辑,不管是哪个方向移动,只需要取出那个方向的数据,遍历处理这个方向每一行的移动逻辑就行了。

示例

格子

grids属性从上到下分别存储了 [0, 0, 0, 2]、[0, 0, 8, 16]、[2, 2, 8, 2]、[0, 8, 32, 2] 这 4 行数据。

gridsReversed属性从左到右分别存储了 [0, 0, 2, 0]、[0, 0, 2, 8]、[0, 8, 8, 32]、[2, 16, 2, 2] 这 4 行数据。

当右移时,遍历grids每一行的数据,再移动每一行。

当左移时,遍历grids每一行的数据,先复制反转每一行的数据,再移动每一行。

当下移时,遍历gridsReversed每一行的数据,再移动每一行。

当上移时,遍历gridsReversed每一行的数据,先复制反转每一行的数据,再移动每一行。


mirahs
1 声望0 粉丝