您如何解决:“ TypeError:参数1必须是pygame.Surface,而不是list”?

时间:2019-08-08 02:22:30

标签: python pygame pycharm python-3.7.4

我正在使用平台游戏在整个关卡中搭建平台。我知道如何使用pygame.transform.scale,但我使用的是带有类等的Spritesheet,因此这并不完全有效。所以我不断收到这个错误: “ TypeError:参数1必须是pygame.Surface,而不是list” 有谁知道如何解决这一问题? (底部完全错误)

class SpriteSheet(object):

     def __init__(self, file_name):

        # Load the sprite sheet.
        self.sprite_sheet = pygame.image.load(path.join(img_dir, 
                            file_name)).convert()

    def get_image(self, x, y, width, height):

        # Create a new blank image
        image = pygame.Surface([width, height]).convert()

        # Copy the sprite from the large sheet onto the smaller image
        image.blit(self.sprite_sheet, (0, 0), (x, y, width, height))

        # Assuming black works as the transparent color
        image.set_colorkey(constants.BLACK)

        # Return the image
        return image


GRASS = (648, 0, 70, 70)


class Platform(pygame.sprite.Sprite):

    def __init__(self, sprite_sheet_data):

         super().__init__()

        sprite_sheet = SpriteSheet('tiles_spritesheet.png')
        # Grab the image for this platform
        self.image = sprite_sheet.get_image(sprite_sheet_data[0],
                                            sprite_sheet_data[1],
                                            sprite_sheet_data[2],
                                            sprite_sheet_data[3])


        self.rect = self.image.get_rect()


class Level01(Level):

    Level.__init__(self, player)

    level_floor = [[platforms.GRASS, 300, 550]]
    pygame.transform.scale(level_floor, (6000, 50)

    for platform in level_floor:
    floor = platforms.Platform(platform[0])
    floor.rect.x = platform[1]
    floor.rect.y = platform[2]
    floor.player = self.player
    self.platform_list.add(floor)

错误:

Traceback (most recent call last):
  File "/Users/qingduliu/PycharmProjects/Platformer/platform_scroller.py", line 105, in <module>
main()
  File "/Users/qingduliu/PycharmProjects/Platformer/platform_scroller.py", line 23, in main
level_list = [levels.Level01(player), levels.Level02(player)]
  File "/Users/qingduliu/PycharmProjects/Platformer/levels.py", line 98, in __init__
pygame.transform.scale(level_floor, (6000, 50))
TypeError: argument 1 must be pygame.Surface, not list

0 个答案:

没有答案