2016-07-20 170 views
1

我已經使用python對Connect 4進行了編程,並且我想創建一個Save選項,但我不確定如何保存所有用戶輸入。這主要是所有已經放置在板上的櫃檯。董事會是一個多維陣列:如何保存棋盤遊戲? Python

board = [] 
for row in range(6): 
    board.append([]) 
    for column in range(7): 
     board[row].append(0) 

有沒有人有任何想法我會如何存儲這些數據?我正在考慮將它寫入文件,並在打開保存時可以讀取它,但我不確定如何將文本重新解釋爲董事會職位。

回答

4

如果你只關心用Python讀這個文件,那麼pickle吧!

import pickle 

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

是所有的編碼必要的?它究竟做了什麼?保存遊戲過程中的所有輸入以及何時打開導入舊用戶輸入? –

+0

這只是序列化'board'列表並將其保存到文件中。您可以爲'dump'方法的答案,或者[這裏](https://docs.python.org/3/library/pickle.html#pickle.dump)鏈接讀到它。 – Alex

1

如果你的遊戲狀態被保存在一個簡單的對象,比如整數的列表清單,如:

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

那麼你也可以使用JSON代替鹹菜存儲這個對象一個文件,像這樣:

import json 

fp = "/path/to/saved/file.txt" 
with open(fp, "w") as savefile: 
    json.dump(board, savefile) 

請注意,這是基本上相同的答案亞歷克斯給與醃汁取代與json。 pickle的優點是你可以存儲幾乎所有(不是太離奇的)Python對象,而json的優點是這種格式也可以被其他程序讀取。此外,從醃製加載遊戲狀態反對打開你的惡意構造的代碼裏面醃的風險,如果保存的遊戲文件可能來自任意位置。

如果你也想保存歷史記錄你的用戶是如何到達那裏,你必須執行一些其他的數據結構,以保存歷史,但你再可以保存其他數據對象以類似的方式。