2016-07-20 24 views
1

Ich habe Connect 4 mit Python programmiert, und ich wollte eine Option speichern, obwohl ich nicht sicher bin, wie ich alle Benutzereingaben speichern würde. Welches sind hauptsächlich alle Zähler, die auf dem Board platziert wurden. Die Platine ist ein mehrdimensionales Array:Wie man Brettspiel speichert? Python

Würde jemand eine Idee haben, wie ich diese Daten speichern würde? Ich dachte daran, es in eine Datei zu schreiben, und beim Öffnen des Save kann es es lesen, obwohl ich nicht sicher bin, wie ich den Text in Brettpositionen uminterpretiere.

Antwort

4

Wenn Sie nur daran interessiert sind, diese Datei mit Python zu lesen, dann pickle it!

import pickle 

fp = '/path/to/saved/file.pkl' 
with open(fp, 'wb') as f: 
    pickle.dump(board, f) 
+0

ist das alles Codierung notwendig? Was genau macht es? Alle Eingaben während des Spiels speichern und beim Öffnen die alten Benutzereingaben importieren? –

+0

Dies serialisiert nur die Liste 'board' und speichert sie in einer Datei. Sie können darüber in dem Link in der Antwort oder [hier] (https://docs.python.org/3/library/pickle.html#pickle.dump) für die 'dump'-Methode nachlesen. – Alex

1

Wenn Ihr Spielzustand in einem einfachen Objekt, wie eine Liste der Liste der ganzen Zahlen, wie diese gespeichert wird:

WIDTH = 7 
HEIGHT = 6 
board = [[0 for column in range(WIDTH)] for row in range(HEIGHT)] 

dann können Sie auch JSON anstelle von Gurke dieses Objekt zu speichern, in eine Datei, wie diese:

Beachten Sie, dass dies im Grunde die gleiche Antwort Alex ist, mit Gurke ersetzt mit Json. Der Vorteil von Pickle ist, dass Sie fast alle (nicht zu bizarren) Python-Objekte speichern können, während der Vorteil von json darin besteht, dass dieses Format auch von anderen Programmen gelesen werden kann. Wenn Sie den Spielstatus von einem gebeizten Objekt laden, öffnet sich das Risiko für bösartig konstruierten Code innerhalb des Pickles, wenn die gespeicherte Spieldatei von beliebigen Orten kommen kann.

Wenn Sie auch den Verlauf speichern möchten, wie Ihr Benutzer dorthin gelangt ist, müssen Sie eine andere Datenstruktur implementieren, um diesen Verlauf zu speichern, aber Sie können dann das andere Datenobjekt auf ähnliche Weise speichern.