2017-06-29 15 views
0

通常、このエラーは括弧に問題があることを示します(例:かっこ、欠落、間違った箇所など)。ここの問題。Pythonの 'builtin_function_or_method'オブジェクトにリストの属性 '__getitem__'がありません

#iterate through all the tiles on the map and set as a background color 
for y in range(MAP_WIDTH): 
    for x in range(MAP_HEIGHT): 
     #checks if the tile is a wall 
     wall = map[x][y].block_sight 
     if wall: 
      rlib.console_set_char_background(
      con, x, y, color_dark_wall, rlib.BKGND_SET) 
     else: 
      rlib.console_set_char_background(
      con, x, y, color_dark_ground, rlib.BKGND_SET) 

ウォール=マップ行でエラーが発生します。マップは、Python内の配列の機能をシミュレートするリストのリストです。 block_sightがtrueまたはfalseのいずれかであり、ここでの設定です:

class Tile: 
    #Tiles are components of the map 
    def __init__(self, blocked, block_sight = None): 
     #takes the information and stores it on the tile 
     self.blocked = blocked 

     #if not specified, block_sight if the same as blocked 
     if block_sight is None: block_sight = blocked 
     self.block_sight = block_sight 

これで任意の助けいただければ幸いです。

編集:ここではマップが構築される方法です。

#generates a list of lists with empty tiles as elements 
def makemap(): 
    map = [[Tile(False) #Must call a conctructor, not a variable such as floor 
     for y in range(MAP_HEIGHT)] #uses comprehension to generate lists 
      for x in range(MAP_WIDTH)] 

    #place two pillars to test the map 
    map[30][22].blocked = True 
    map[30][22].block_sight = True 
    map[50][22].blocked = True 
    map[50][22].block_sight = True 
+0

エラーから、リストのリストのように聞こえるのは実際にあなたが期待しているものではありません。おそらく、外側のリストには内側のリストではなく、組み込み関数が含まれています。 'map'の作成方法を教えてください。 – Blckknght

+0

あなたはその行を呼び出す直前に 'map [x] [y]'を出力して、あなたが得たものを見ることができますか? –

+0

あるいは、 'map'は、他の名前のリストではなく、関数型プログラミングで使う組み込み関数ですか? – Blckknght

答えて

0

関数のmakemapの中で()、私はグローバル変数としてマップを使うのを忘れていましたので、この機能のビルドというマップを使用するために必要なものそれにアクセスすることはできません。関数の最初の行として "グローバルマップ"を追加すると、エラーが解決されました。

関連する問題