我的 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
我在for x, row in enumerate(table):
*. 我尝试了各种方法,甚至移动了图块集本身,并更改了文件类型。我还尝试了其他代码,例如范围。
我过去曾设法加载图像,这只是我第一次尝试使用图块集。瓦片集有 9 个 16x16 瓦片,其中有一些透明度(因此是convert_alpha()
)。
那么,谁能说出为什么我在NoneType
这里得到错误?和图像有关系吗?(注意,“For tileX in range”中有 3 的原因是它不接受教程中设置的第四个计算,所以我自己做了数学。)
- 编辑:意外输入:
for x, row in range(table):
而不是for x, row in enumerate(table):
描述。