Textadventure PyQT Klassenobjekt in eine Datei speichern

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Jetzt fehlt nur noch der Schritt, gar kein pickle zu verwenden.
MartinausWien
User
Beiträge: 15
Registriert: Dienstag 15. Dezember 2020, 00:41

Sirius3 hat geschrieben: Donnerstag 17. Dezember 2020, 06:44 Jetzt fehlt nur noch der Schritt, gar kein pickle zu verwenden.
Hi Sirius, welches Seralisationsformat um den Raum(Spielstand) abzuspeichern ist besser geeignet?
Kannst du mir bitte ein paar Stichworte geben.
danke lg Martin
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@MartinausWien: Wenn es tatsächlich nur ein einzelner Raumname als Zeichenkette ist, wäre das einfachste eine Textdatei die diesen einen Namen enthält. Ansonsten wäre JSON eine Möglichkeit für die es in der Standardbibliothek ein Modul gibt.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
MartinausWien
User
Beiträge: 15
Registriert: Dienstag 15. Dezember 2020, 00:41

__blackjack__ hat geschrieben: Donnerstag 17. Dezember 2020, 10:02 @MartinausWien: Wenn es tatsächlich nur ein einzelner Raumname als Zeichenkette ist, wäre das einfachste eine Textdatei die diesen einen Namen enthält. Ansonsten wäre JSON eine Möglichkeit für die es in der Standardbibliothek ein Modul gibt.
Hi, eine Textdatei habe ich bei der Itemliste (Schwert, Stein etc.) verwendet und die wird bei Spielstandsicherung als .txt abgespeichert.

Beim Raum handelt es sich um ein ganzes Klassenobjekt (ein Raum der Klasse Room) mit all seinen Attributen.
Dieses brauche ich nach dem Laden wieder, da z.B auch die Ausgänge zu anderen Räumen etc. in der Klasse definiert sind.
Würde ich nur den Raumnamen als .txt abspeichern, müsste ich diesen dann nach dem Laden wieder irgendwie dem Objekt zuordnen, über
ein Wörterbuch etc, was auch geht, aber mehr Schritte benötigt, als wenn der Raum gleich wieder "da" ist.

JSON, will ich mir unbedingt mal ansehen, habe mich damit noch gar nicht beschäftigt, aber ist mir immer wieder mal untergekommen,
plattformunabhängiger Datenaustausch, hm, wenn du es jetzt auch gleich erwähnst..
danke mal __Blackjack__. , lg Martin
MartinausWien
User
Beiträge: 15
Registriert: Dienstag 15. Dezember 2020, 00:41

kurzer Nachtrag: hab jetzt nochmal bissl recherchiert.
Da gibt es ja viele Beiträge zu z.B JSON vs. Pickle. Was ist schneller, Vorteile Nachteile etc. , sehr interessant.
angeblich ist Pickle bei komplexer Objektserialisierung viel schneller, JSON dafür bei fast allem anderen, funktioniert aber nicht bei allen Python Objekten.
Da ich ja mit Pickle eh ein Objekt speichere wird es denk ich kein großer Nachteil sein fürs Objekt pickle zu verwenden.
JSON werde ich jetzt mal studieren, wieder was zu lernen cool. lg
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

MartinausWien hat geschrieben: Donnerstag 17. Dezember 2020, 10:28 Beim Raum handelt es sich um ein ganzes Klassenobjekt (ein Raum der Klasse Room) mit all seinen Attributen.
Dieses brauche ich nach dem Laden wieder, da z.B auch die Ausgänge zu anderen Räumen etc. in der Klasse definiert sind.
Du hast den Raum mit all seinen Daten schon erzeugt, und den kannst Du schon über den Namen im passenden Wörterbuch nachschlagen. Daher ist es völlig unnötig, den Raum als Objekt in eine Datei zu packen. Du packst ja auch nicht alle anderen Räume mit rein.
MartinausWien
User
Beiträge: 15
Registriert: Dienstag 15. Dezember 2020, 00:41

Hi danke Sirius3,
Es wird langsam immer klarer..
Wenn ich es richtig verstanden habe: gibt es 2 Varianten die möglich sind.
1.) Version ohne Wörterbuch, dafür muss ich aber das Raumobjekt mit z.B pickle in eine Datei packen. nach dem Laden ist (raumjetzt) wieder als Objekt da.
2.) Version mit Wörterbuch, dafür reicht der gespeicherte Raumname, (z.B .txt, kein pickle) welcher nach dem Laden im passenden Wörterbuch nachgeschlagen wird
um raumjetzt wieder herzustellen.

Wenn das soweit richtig ist, gibt es Eurer Meinung klare Vorteile einer Version, d.h was ist die schnellere Version.
Antworten