2017-06-26 5 views
0

まずように動作していない、私はマップはリストのリストであるゲーム作ってるんだ:Pythonのリストジェネレータは、すべての意図

P1.Cmap = [ 
     ['0,'0',0'], 
     ['0,'0',0'], 
     ['0,'0',0'], 
] 

を、私はそれを印刷する機能を持っている:

def render(): #render the map to player 
    P1.Cmap[P1.y][P1.x] = P1.char 
    j = 40 - len(P1.Cmap) 
    p = int(j/2) 
    l = len(P1.Cmap[0]) 
    print('\n' * p) 
    print('-' * l) 
    for r in P1.Cmap: 
     print(''.join(r)) 
    print('\n' * p) 
P1は、プレイヤオブジェクトとチャーは、それを表す文字(X)である

及びIは、所定のパラメータを持つマップを生成する機能を作った:

代わり

0X0 
0X0 
0X0 

:私はP1.x = 1であることをプレイヤXとYを設定すると10

def newMap(): 
    Nmn = input('What is the name of the map? ') 
    NmSx = input('What is the size you want?(X) ') 
    NmSy = input('What is the size you want?(Y) ') 
    Row = [] 
    Map = [] 
    for r in range(int(NmSx)): 
     Row.append('0') 
    for c in range(int(NmSy)): 
     Map.append(Row) 
    P1.Cmap = Map 
    print(P1.Cmap) 

はなく、P1.y = 0と私はそれ実際に印刷、マップを生成する関数を使用します(私が作るときは上記の最初のコードブロックのようなマップ)それは「べき」ものの:それと

0X0 
000 
000 

は、私が)(問題は()レンダリングではありませんが、それはNEWMAPであると考え、私はそれを見つけることができない、任意のアイデア?

+0

あなたのリストはPythonの構文ではありません。

代わりに、のようなものを試してみてください。余りにも少ないか、または多くの引用符とカンマが欠けています。 –

答えて

1

あなたは、次のようにP1.Cmap作成されています

Row = [] 
Map = [] 
for r in range(int(NmSx)): 
    Row.append('0') 
for c in range(int(NmSy)): 
    Map.append(Row) 
P1.Cmap = Map 

はしかし、これは[Row, Row, Row]からMapが同じになり、それは、あるは常にあなたがRow = []して上に作成した同じリストを参照している、したがって、任意の時間を変更すると、各「行」が!であるため、変更は3つの「行」すべてでMapに反映されます。

X = int(NmSx) 
Y = int(NmSy) 
Map = [['0' for _ in range(X)] for _ in range(Y)]