我已经使用python编写了Connect 4,我想创建一个Save选项,虽然我不确定如何保存所有用户输入。主要是所有已放置在电路板上的计数器。该板是一个多维数组:
board = []
for row in range(6):
board.append([])
for column in range(7):
board[row].append(0)
有人会知道我如何存储这些数据吗?我正在考虑将它写入文件,打开保存时它可以读取它,虽然我不确定如何将文本重新解释为电路板位置。
答案 0 :(得分:4)
如果你只关心用Python阅读这个文件,那么readline module它!
import pickle
fp = '/path/to/saved/file.pkl'
with open(fp, 'wb') as f:
pickle.dump(board, f)
答案 1 :(得分:1)
如果你的游戏状态保存在一个简单的对象中,比如整数列表列表,如下所示:
WIDTH = 7
HEIGHT = 6
board = [[0 for column in range(WIDTH)] for row in range(HEIGHT)]
然后您也可以使用JSON而不是pickle将此对象存储在文件中,如下所示:
import json
fp = "/path/to/saved/file.txt"
with open(fp, "w") as savefile:
json.dump(board, savefile)
请注意,这与Alex给出的答案基本相同,用json取代了pickle。 pickle的优点是你可以存储几乎所有(不太奇怪)的Python对象,而json的优点是这种格式也可以被其他程序读取。此外,如果保存的游戏文件可以来自任意位置,那么从pickle反对中加载游戏状态会让您面临在pickle中恶意构造代码的风险。
如果您还想保存用户到达目录的历史记录,您必须实现一些其他数据结构来保存该历史记录,但您可以以类似的方式保存该其他数据对象。