0

私のバージョンの Python は 3.2 で、Pygame は 1.9.1 です。

ここにある指示の最初の部分に従いました: http://wiki.sheep.art.pl/Tiled%20Map%20in%20PyGame、自分のタイルセットに対応するためにいくつかの調整を行いました:

def load_tileset(filename, width, height):
   image = pygame.image.load(filename).convert_alpha()
   imageWidth, imageHeight = image.get_size()
   tileSet = []
   for tileX in range(0, 3):
      line = []
      tileSet.append(line)
      for tileY in range(0, 3):
         rect = (tileX*width, tileY*height, width, height)
         line.append(image.subsurface(rect))
if __name__=='__main__':

   pygame.init()
   screen = pygame.display.set_mode((WIDTH, HEIGHT))
   pygame.display.set_caption('Tiled Background')
   screen.fill((240, 240, 255))
   table = load_tileset('tableset.gif', 16, 16)
   for x, row in enumerate(table):
      for y, tile in enumerate(row):
         screen.blit(tile, (x*24, y*24))
   pygame.display.flip()
   while pygame.event.wait().type != pygame.locals.QUIT:
        pass

*で Nonetype エラーが発生しfor x, row in enumerate(table):ます。タイルセット自体を移動したり、ファイルの種類を変更したり、さまざまなことを試しました。範囲など、他のコードも試しました。

過去に画像を読み込むことができましたが、タイル セットを使用するのはこれが初めてです。タイル セットには 9 個の 16x16 タイルがあり、それらにはある程度の透明度があります (したがってconvert_alpha())。

NoneTypeでは、なぜここでエラーが発生したのか誰にも言えますか? イメージとか関係あるの?(注、「For tileX in range」に 3 があるのは、チュートリアルで 4 番目に設定されている計算を受け入れないためです。そのため、自分で計算しただけです。)

  • 編集: 誤って入力:説明for x, row in range(table):の代わりにfor x, row in enumerate(table):
4

1 に答える 1

0

完全なコードを投稿していないか、間違いを犯しています:for x, row in range(table)上記のコードには行がありません。この特定のコードでは、関数から 2 つの変数を取得しようとしているように見えますがrange、一度に 1 つの値しか返されません。

あなたはおそらくタイプするつもりfor x, row in enumerate(table)でした。その場合、呼び出し時にオブジェクトを返す必要があります。これtable = load_tileset('tableset.gif', 16, 16)は、特定の関数が明示的にreturnオブジェクトに伝えられない限り、返さNoneれるため、行が問題を引き起こしているためですtypeNoneNonetype

None以下は、文字列を返し、次に文字列を返す関数の例ですa returned string

def thisFuncReturnsNone():
   pass

print 'what gets returned:', thisFuncReturnsNone()
>>> None

def thisFuncReturnsAString():
  return 'a returned string'

print 'what gets returned a second time:', thisFuncReturnsAString()
>>> a returned string
于 2012-07-30T17:05:18.460 に答える