0

ゲームで元に戻すオプションをコーディングしています。このゲームは単純なマッチ 3 ゲームで、各セルには 1 ~ 4 色のボールが含まれているため、int のグリッド全体を保存するというアイデアがありました。これを行うには、それらすべてを 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];

それはうまくいきますが、これを行うためのより良い/より効率的な方法があると思います. シリアライゼーションについては何も知りませんが、配列を保存するためにそれを使用できるかどうか疑問に思っていますか?

4

1 に答える 1

0

私は Objective C を知らないので、コード例を示すことはできません (誰かがそれを編集して追加することはできますが)。

undo メソッドを処理する最善の方法は、状態全体ではなく変更内容を保存することです。したがって、ユーザーがグリッド セル G を操作してその色を A から B に変更した場合、G と A のみを保存します。次に、元に戻すを押すと、グリッド セル G を状態 A に復元します。

于 2013-06-30T01:44:30.593 に答える