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

2024-04-25 20:56:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个平台地板在整个水平在一个平板游戏。我知道如何使用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

Tags: theinrectimageselfdatainitlevel