微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

圈子不会在pygame中绘制

如何解决圈子不会在pygame中绘制

我正在pygame中尝试精灵, 在此示例中,使用以下代码成功绘制了圆:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        # line required to propertly create the sprite
        pygame.sprite.Sprite.__init__(self)

        # create a plain rectangle for the sprinte image
        self.image = pygame.transform.scale(player_img,(50,40))
        self.image.set_colorkey(BLACK)

        # find the rectangle that encloses the image
        self.rect = self.image.get_rect()
        self.radius = 20
        pygame.draw.circle(self.image,RED,self.rect.center,self.radius)
        # center the sprite on screen
        self.rect.center = (WIDTH / 2,HEIGHT - 50)

        self.speedx = 0  

但是当我像这样修改矩形中心后放它时,它不会绘制:

class Player(pygame.sprite.Sprite):
    def __init__(self):
        # line required to propertly create the sprite
        pygame.sprite.Sprite.__init__(self)

        # create a plain rectangle for the sprinte image
        self.image = pygame.transform.scale(player_img,40))
        self.image.set_colorkey(BLACK)

        # find the rectangle that encloses the image
        self.rect = self.image.get_rect()
        self.radius = 20
        
        # center the sprite on screen
        self.rect.center = (WIDTH / 2,HEIGHT - 50)
        pygame.draw.circle(self.image,self.radius)

        self.speedx = 0

为什么会这样?

解决方法

是的,当然是因为您是在self.image上画圆。如果更改矩形的位置,则仅更改图像以后将为blit的位置。 self.image没有位置。这只是一个 Surface 对象,其左上角始终为(0,0)。

在以下代码中,圆圈绘制在self.image的中心

self.rect = self.image.get_rect()
pygame.draw.circle(RED,self.rect.center,self.radius)

在下文中,将在slef.image 表面的边界之外绘制圆,因为该圆将绘制在图像以后将blit的位置:

self.rect = self.image.get_rect()
self.rect.center = (WIDTH / 2,HEIGHT - 50)
pygame.draw.circle(self.image,RED,self.radius)

self.rect.center = (WIDTH / 2,HEIGHT - 50)线不会改变self.image,它只会改变绘制圆的位置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。