更有效的方法来保存游戏级别状态

时间:2013-06-30 01:36:35

标签: objective-c

我正在编写游戏中的撤消选项。游戏是一个简单的比赛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];

这很好,但我想知道有更好/更有效的方法来做到这一点。我不知道序列化,但我想知道是否可能以某种方式使用它来保存数组?

1 个答案:

答案 0 :(得分:0)

我不知道Objective C,所以我不能给出示例代码的方式(有人可以编辑并添加它)。

处理撤消方法的最佳方法是存储更改的内容而不是整个状态。因此,如果用户与网格单元G交互并将其颜色从A更改为B,则仅存储G和A.然后,如果他们点击撤消恢复网格单元格G到状态A.