我正在编写游戏中的撤消选项。游戏是一个简单的比赛3游戏,每个单元格包含一个球,可以是1-4种颜色,所以我的想法是保存整个网格的整数,我这样做我将它们全部放入NSMutableArray,像这样...
NSMutableArray *currentGrid = [[NSMutableArray alloc] init];
for (int i=0; i<(mapWidth*(mapHeight*2)); i++)
{
[currentGrid addObject:[NSNumber numberWithInt:0]];
}
for (int iy=(mapHeight*2)-1; iy>=0; iy--)
{
for (int ix=mapWidth-1; ix>=0; ix--)
{
int index = (iy*mapWidth)+ix;
Ball *ball = [self valueAtRowWithArray:tilesArray andColumn:ix andRow:iy];
[currentGrid setObject:[NSNumber numberWithInt:ball.ballType] atIndexedSubscript:index];
}
}
[levelStateArray addObject:currentGrid];
这很好,但我想知道有更好/更有效的方法来做到这一点。我不知道序列化,但我想知道是否可能以某种方式使用它来保存数组?
答案 0 :(得分:0)
我不知道Objective C,所以我不能给出示例代码的方式(有人可以编辑并添加它)。
处理撤消方法的最佳方法是存储更改的内容而不是整个状态。因此,如果用户与网格单元G交互并将其颜色从A更改为B,则仅存储G和A.然后,如果他们点击撤消恢复网格单元格G到状态A.