Python游戏的世界奇数输出

时间:2014-07-20 16:22:03

标签: python arrays pickle

我一直在做一个类似胭脂的游戏,在保存随机生成的世界时我遇到了一个问题。

以下代码:

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

1 个答案:

答案 0 :(得分:1)

def load():
    a = pickle.load( open( "save.p", "rb" ) ) 

在这里,您要写入一个局部变量a,然后将其丢弃。您需要添加global a才能为全局变量分配新值。


在下一个问题中,请用文字写下代码应该做什么以及实际发生了什么。在这里你可能写过:

  

此代码应生成一个列表并将其保存到文件中,生成一个新列表,然后加载原始列表。但加载后,当我打印它的值时,我仍然会看到第二个列表的值而不是原始列表的值。