Verwenden von JSON zum Einlesen von Game Level-Daten in iOS

Ich möchte JSON verwenden, um Daten zu meinem Spiel zu speichern, die in meinen Objective-C-Code eingelesen werden sollen.

So hat meine TwinstonesBoardModel.m-Datei die folgenden Methoden (dies sind die ersten Methoden, die beim Start des Spiels aufgerufen werden, um die Positionen der Objekte auf dem Brett festzulegen). Ich weiß nicht warum, aber ich habe meine Objektinitialisierungen aus Gründen der Übersichtlichkeit in mehrere Methoden aufgeteilt.

    // sets the board positions for the stones
    - (void)setToInitialStateMain
    {
        // clear board so each level-load is free of previous data
        [super clearBoard];

        // set the state of two stone objects and their positions
        [super setCellState:BoardCellStateStoneOne forColumn:0 andRow:0];
        [super setCellState:BoardCellStateStoneTwo forColumn:2 andRow:3];
    }

    - (void)setToInitialStateHorizontal
    {
        [super clearBoard];

        [super setHBarCellState:HorizontalState forHBarCol:0 andHBarRow:1];
    }

Und ich habe 3 zusätzliche Methoden für ähnliche Zwecke wie oben, nur das Setzen von Positionen. Ich möchte in einer JSON-Datei Positionen und Zustände mit einem Wert von 100 Ebenen bereitstellen, damit sie auf der Grundlage der Ebenenauswahl gelesen werden können. Wenn ich Ebene 54 auswähle, werden die obigen Funktionen aufgerufen und die Positionen und Zustände von Ebene 54 der JSON-Datei werden angewendet.

Meine Zustände sind:

    typedef NS_ENUM(NSUInteger, BoardCellState) {
        BoardCellStateEmpty = 0,
        BoardCellStateStoneOne = 1,
        BoardCellStateStoneTwo = 2,
        BoardCellStateTarget = 3,
        HorizontalState = 4,
        HorizontalStateEmpty = 5,
        GhostHorizontalState = 6,
        VerticalState = 7,
        VerticalStateEmpty = 8,
        GhostVerticalState = 9,
        IntersectorState = 10
    };

Und ich habe es mit Positionswerten von 0-4 zu tun.

Wie würde ich das machen? Ich bin sehr neu darin, Ebenen aus einer externen Datei einzulesen. Ich könnte es umgehen, alle Positionen für das Spiel hart zu codieren, aber das würde enorm viel Zeit in Anspruch nehmen und sicherlich sehr ineffizient sein.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage