如何获得没有图像的rect属性

时间:2017-08-19 12:40:28

标签: python attributes pygame rect

我正在创建一个盒子类。当我的主精灵碰撞时将重置其位置。这些框是在屏幕上绘制的矩形,因此没有来自self.image.get_rect()的图像。我怎样才能给boxcollisions一个rect属性?

class boxcollisions(pygame.sprite.Sprite):
    def __init__(self, x, y):
        self.y=y
        self.x=x
        self.rect= self.image.get_rect()
        self.rect.left = self.x
        self.rect.top = self.y
        self.rect.width=16
        self.rect.height=16


    def draw(self,x,y):
        pygame.draw.rect(screen, (0, 128, 255), pygame.Rect(x, y, 15, 15))

1 个答案:

答案 0 :(得分:1)

您可以为类提供self.image属性,也可以创建pygame.Rect类的实例。 (我认为Box将是一个更好的名字。)

pygame.sprite.Sprite如果您想将它们与精灵组一起使用,则需要image,因此我建议使用此变体:

class Box(pygame.sprite.Sprite):

    def __init__(self, x, y):
        self.y = y
        self.x = x
        self.image = pygame.Surface((15, 15))
        self.image.fill((0, 128, 255))
        self.rect = self.image.get_rect()
        self.rect.left = self.x
        self.rect.top = self.y

    def draw(self, screen):
        screen.blit(self.image, self.rect)

这是rect变体:

class Box(pygame.sprite.Sprite):

    def __init__(self, x, y):
        self.y = y
        self.x = x
        self.rect = pygame.Rect(self.x, self.y, 15, 15)
        self.color = (0, 128, 255)

    def draw(self, screen):
        pygame.draw.rect(screen, self.color, self.rect)