Android INI File

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Android INI File

    Hallo Community,

    ich wollte fragen ob mir einer erklärt wie das ganze mit den INI files funktioniert.Bei mir im Spiel gibt es ein Select Level Menü mit 10 Levels, alle sind offen. Wenn ich in ein dieser Levels reingehe und das ganze
    Level schaffe, steht dann im Select Level Menü über dem Level welches man geschafft hat "LEVEL COMPLETE". Sagen wir man hat jetzt 5 Levels gespielt, und die 5 Levels geschafft, dann steht im Select Level Menü über den Levels die man
    geschafft hat "LEVEL COMPLETE". Aber jetzt zum Problem, wenn man das Spiel auf dem Handy ausmacht und wieder anmacht, steht über keinem Level "LEVEL COMPLETE". (Ich hab das jetzt noch nicht getestet, aber es ist doch logisch,
    weil das spiel ja von neu angeht und es bestimmt nicht von alleine speichert). Bevor ich mir die Mühe mache und die ganzen Objekte für die Levels mache, wollte ich wissen wie man das schafft das wenn man das Spiel neustartet
    das es so bleibt wie man es verlassen hat. Ich hab im Internet gelesen das geht mit INI Files, aber ich habe keine Ahnung davon. Ich bitte um Hilfe.

    MFG. Recoonz
  • Ja, ini-Files sind da echt eine gute Idee, es gibt auch andere Lösungen, aber die ini ist die wohl einfachste.
    Der Spielstand ist während des Spielens "nur" im Arbeitsspeicher des Gerätes.
    Dieser löscht sich aber von selbst, wenn das Spiel beendet wird.
    Du musst also vorher den Spielstand auf die "Festplatte" des Gerätes sichern.
    Ich hoffe bis hier war das schonmal verständlich.

    Um nun dieses in das Spiel einzubauen gibt es nunmal die ini-Funktionen.
    Diese sind recht einfach aufgebaut.
    Erst eine (ini)-Datei öffnen/laden

    GML-Quellcode

    1. ini_open("name_der_ini.ini")

    dann kann man mit

    GML-Quellcode

    1. ini_write_real("sektion","key",wert)

    oder

    GML-Quellcode

    1. ini_write_string("sektion","key","wert")

    etwas in die ini datei speichern.
    In der ini gibt es oberpunkte, die sektionen
    und Unterpunkte, die Keys(wie sie vom GM genannt werden).
    Nach dem beschreiben der ini auf keinen Fall

    GML-Quellcode

    1. ini_close()

    vergessen, denn wenn die offen gelassen wird, führt das meißt zu Problemen.

    Um jetzt auch die Werte aus der ini wieder lesen zu können, muss man auch zuerst die ini wieder öffnen,

    GML-Quellcode

    1. ini_open("name_der_ini.ini")

    dann kann mein mit der angabe von sektion und key etwas aus der ini lesen

    GML-Quellcode

    1. ini_read_real("sektion","key",default)

    oder

    GML-Quellcode

    1. ini_read_string("sektion","key","default")

    Außerdem kann man hierbei noch einen "default" angeben, dieser wird von der Funktion zurückgegeben, wenn der Wert in der ini nicht gefunden wurde/einfach nicht existiert.
    Auch hier

    GML-Quellcode

    1. ini_close()
    2. /gml]
    3. am Ende nicht vergessen.
    4. Für weitere Hilfe schau doch in die GM-Hilfe oder such nach Tutorials (es gibt genug dazu).
    5. Hier noch ein kleines Beispiel zur Verwendung einer ini:
    6. [gml]
    7. //Der Spiecher-Code des Spiels (kann auch game-end oder sonst was sein)
    8. ini_open("savedata.ini")
    9. ini_write_real("allgemein","Coins",global.coins)
    10. ini_close()
    Alles anzeigen

    GML-Quellcode

    1. //Der Lade-Code des Spiels (kann auch game-start oder sonst was sein)
    2. ini_open("savedata.ini")
    3. global.coins = ini_read_real("allgemein","Coins",0)
    4. ini_close()

    Nunja das soll reichen.
    Bei weiteren Fragen frag einfach :D
    Gruß Larsi
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Danke für deine schnelle Antwort,

    aber ich hab noch eine frage, wo soll ich den Code erstellen, also soll ich ein Objekt erstellen mit dem Event : Game end,
    und das Objekt dann in den ersten raum einfügen der bei mir geöffnet wird, wenn mein Spiel startet.
    Eigentlich verstehe ich sonst alles, hast es auch super erklärt, aber das mit "sektion", "key", "wert" verstehe ich noch nicht.

    Nochmal zu was anderem, kann man Objekte in ein anderen Raum erstellen.
    Also wie man oben bei meiner Frage lesen kann, will ich ja dieses "Level Complete" bei meinem Level Select Menü über den Levels die man schon geschafft hat erstellen.
    Aber ich wüsste jetzt nicht wie. Bsp: (um es leichter zu verstehen) In room_1 berühre ich Objekt_1, wenn ich dieses Objekt berühre, erstelle ich in room_2 Objekt_2.
    Danke schonmal für deine Hilfe.

    Gruß Recoonz
  • Ich gehe davon aus, dass du ein Hauptmenü hast und du das Level Selection Menü über einen Button laden wirst. Genau in diesem Button musst du den Code zum auslesen der Ini einfügen. Jedes mal, wenn der Spieler den Button drückt, wird der Inhalt der Ini ausgelesen und dann im Raum angezeigt. Hintergrund dafür ist, dass die von dir gesetzten Variablen mit der Information befüllt werden, ob ein Level bereits abgeschlossen wurde oder nicht.

    Das gleiche musst du auch mit dem Button machen, der das Spiel startet. Dies dient dazu, dass die Inhalte der Ini Datei zum Stand des Spielstarts aktuell sind und dann am Ende des Levels bei Abschluss um die neuen Daten ergänzt werden.


    Die zweite Frage kann ich dir insofern beantworten, dass du ein Objekt durch einen Code erstellen kannst.

    GML-Quellcode

    1. instance_create(x,y, obj_name)


    Dieser Code sorgt dafür, dass ein Objekt unter der X und Y Position im Raum erstellt wird. Das obj_name ist in diesem Fall nur ein Platzhalter und kann mit dem zu erstellenden Objekt ersetzt werden. Dies gilt jedoch nur für den im Moment aktiven Raum.
    Where words fail. hate speaks!

    Mein erstes, abgeschlossenes Projekt: [Android] Crappy Plane

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von hAtE NeVeR dIeS ()

  • Hallo erneut :D

    Recoonz schrieb:

    aber das mit "sektion", "key", "wert" verstehe ich noch nicht.

    Hm dann glaube ich, du hast es doch nicht verstanden...

    Ich habe es doch eigentlich gut erklärt.
    In der ini wird ja etwas gespeichert.
    Dies erfolgt über eine "sektion" also ein Oberpunkt, vorstellbar wie eine Überschrift über einer Tabelle und
    über ein "key", ein Unterpunkt, vorstellbar wie ein Eintrag in einer Tabelle.
    und zuletzt gibt es noch den wert, der in der Tabelle eben gelesen oder geschrieben werden soll.

    Nochmal ein kleines Bild zur Veranschaulichung:
    Bilder
    • ini.png

      13,38 kB, 400×500, 627 mal angesehen
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D