私のバージョンの 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):
。