简体   繁体   English

Pygame环境下如何画矩形和圆

[英]How to draw rectangle and circles in Pygame environment

I am trying to create a pygame environment with various shapes of sprites but my code seems not working.我正在尝试创建一个具有各种形状精灵的 pygame 环境,但我的代码似乎无法正常工作。 Here is what I have:这是我所拥有的:

class Object(pygame.sprite.Sprite):

    def __init__(self, position, color, size, type):

        # create square sprite
        pygame.sprite.Sprite.__init__(self)
        if type == 'agent':
            self.image = pygame.Surface((size, size))
            self.image.fill(color)
            self.rect = self.image.get_rect()
        else:
            red = (200,0,0)
            self.image = pygame.display.set_mode((size, size))
            self.image.fill(color)
            self.rect = pygame.draw.circle(self.image, color,(), 20)


        # initial conditions
        self.start_x = position[0]
        self.start_y = position[1]
        self.state = np.asarray([self.start_x, self.start_y])
        self.rect.x = int((self.start_x * 500) + 100 - self.rect.size[0] / 2)
        self.rect.y = int((self.start_y * 500) + 100 - self.rect.size[1] / 2)

Does anyone notice any issues with the Object class?有人注意到 Object class 有任何问题吗?

You have to create a pygame.Surface , instead of creating a new window ( pygame.display.set_mode ).您必须创建一个pygame.Surface ,而不是创建一个新的 window ( pygame.display.set_mode )。
The pixel format of the Surface must include a per-pixel alpha ( SRCALPHA ). Surface的像素格式必须包含每像素 alpha ( SRCALPHA )。 The center point of the circle must be the center of the Surface .圆的中心点必须是Surface的中心。 The radius must be half the size of the Surface :半径必须是Surface大小的一半:

self.image = pygame.Surface((size, size), pygame.SRCALPHA)
radius = size // 2
pygame.draw.circle(self.image, color, (radius, radius), radius)

Class Object : Class Object :

class Object(pygame.sprite.Sprite):

    def __init__(self, position, color, size, type):

        # create square sprite
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.Surface((size, size), pygame.SRCALPHA)
        self.rect = self.image.get_rect()
        
        if type == 'agent':
            self.image.fill(color)
        else:
            radius = size // 2
            pygame.draw.circle(self.image, color, (radius, radius), radius)

        # initial conditions
        self.start_x = position[0]
        self.start_y = position[1]
        self.state = np.asarray([self.start_x, self.start_y])
        self.rect.x = int((self.start_x * 500) + 100 - self.rect.size[0] / 2)
        self.rect.y = int((self.start_y * 500) + 100 - self.rect.size[1] / 2)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM