尝试加载图像时使用 spritesheets 失败

Using spritesheets failed when trying to load an image

我正在制作一个小游戏来练习 pygame 中的编程。我在尝试使用 spritesheet 时遇到了一个错误。我试图修复它,但我看不出问题所在。

class Spritesheet:
    # loading and parsing spritesheets

    def __init__(self, filename,game):
        self.spritesheet = pygame.image.load(filename).convert()

    def get_image(self, x, y, width, height):
        # take an image from the spritesheet
        image = pygame.Surface((width,height))
        image.blit(self.spritesheet, (0,0), (x, y, width, height))
        return image

这是class。下一个是我游戏中的加载数据功能class

    def load_data(self):
        # ------------- load --------------
        self.dir = path.dirname(__file__)
        img_dir = path.join(self.dir, 'img')

        # load the spritesheet
        self.spritesheet = Spritesheet(path.join(img_dir, SPRITESHEET))

SPRITESHEET 在设置文件中单独定义。在这里,我调用该函数并尝试从中获取图像。这是我收到错误的地方。

    def __init__(self,game):

        pygame.sprite.Sprite.__init__(self)

        # use surface to create image
        self.game = game
        self.image = self.game.spritesheet.get_image(614,1063,120,191)
        self.rect = self.image.get_rect(x=50, y=399 )

错误信息:self.image = self.game.spritesheet.get_image(614,1063,120,191) AttributeError: 'Game' object has no attribute 'spritesheet'

这是完整的项目:https://github.com/Frago23/Frago1321

您永远不会在 Game class 中调用 load_data 方法,因此您永远不会加载 spritesheet 并且游戏实例不会有 self.spritesheet 属性。只需在 Game class 的 __init__ 方法中调用它,它应该可以工作(只要没有其他问题)。