【发布时间】:2014-09-11 05:07:05
【问题描述】:
我一直在制作 rougelike 游戏,在保存随机生成的世界时遇到了问题。
以下代码:
import random import pickle
size = 6
a = [["WHAT"]*size for x in xrange(size)]
def make():
for x in range(0, size):
for z in range(0, size):
a[x][z] = random.choice(["T","G", "S", "M"])
def save():
try:
pickle.dump( a, open( "save.p", "wb" ) )
except:
print "Error"
def load():
a = pickle.load( open( "save.p", "rb" ) )
def printworld():
for x in range(0, size):
print""
for z in range(0, size):
print a[x][z],
print "",
make()
printworld()
save()
print""
make()
printworld()
print""
load()
printworld()
输出以下内容:
G G T M M S
T G G G T G
T M S G M M
G S M S M S
M S T M G T
M G G T G S
G G S T T S
S M G G S G
T M S G T M
S M S T G G
M T S G M S
G G S G M S
G G S T T S
S M G G S G
T M S G T M
S M S T G G
M T S G M S
G G S G M S
什么时候应该有输出:
G G T M M S
T G G G T G
T M S G M M
G S M S M S
M S T M G T
M G G T G S
G G S T T S
S M G G S G
T M S G T M
S M S T G G
M T S G M S
G G S G M S
G G T M M S
T G G G T G
T M S G M M
G S M S M S
M S T M G T
M G G T G S
【问题讨论】:
-
您能否指出这两个输出之间有什么不同,特别是当前输出有什么问题?它们看起来有些微妙的不同,但我不确定你在期待什么。
-
Cyber: 代码 print "", make() printworld() save() print"" make() printworld() print"" load() printworld() 假设它是一个单个字符数组,但它输出 ab b。为什么?
-
如果您将函数更改为采用显式参数并返回适当的值,您可能会发现单独测试每个部分会更容易。
-
您会强调(粗体/斜体)观察到的输出和预期输出的差异吗?会更容易解释。
-
我是编辑问题的人——据我所知,OP 正在尝试创建两个“世界”。他保存了第一个世界并尝试加载它,但最终却获得了第二个世界。