【问题标题】:Pygame and Tilesets, followed instructions for use, but I get "noneType" errorPygame 和 Tilesets,遵循使用说明,但出现“noneType”错误
【发布时间】:2012-07-25 22:25:22
【问题描述】:

我的 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):* 中收到 Nonetype 错误。我尝试了各种方法,甚至移动了图块集本身,并更改了文件类型。我还尝试了其他代码,例如范围。

我过去曾设法加载图像,这只是我第一次尝试使用图块集。瓦片集有 9 个 16x16 瓦片,其中有一些透明度(因此是 convert_alpha())。

那么,谁能说出为什么我在这里得到NoneType 错误?和图像有关系吗? (注意,“For tileX in range”中有 3 的原因是它不接受教程中设置的第四个计算,所以我自己做了数学。)

  • 编辑:意外输入:for x, row in range(table):,而不是描述中的for x, row in enumerate(table):

【问题讨论】:

  • load_tileset 不返回任何内容

标签: image graphics pygame nonetype


【解决方案1】:

您没有发布完整的代码,或者犯了一个错误:上面的代码中没有for x, row in range(table) 行。使用此特定代码,您似乎试图从 range 函数中提取两个变量,但它一次只返回一个值。

您可能想输入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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多