Рисование в пигмеи на поверхности по сравнению с рисованием непосредственно на дисплее - PullRequest
2 голосов
/ 15 апреля 2020

Какой лучший способ рисовать объекты в пигме?

1) Рисование на поверхности с последующим перелистыванием на экран.

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super(Player, self).__init__()
        self.surf = pygame.Surface((75, 25))
        self.surf.fill((255, 255, 255))
        self.rect = self.surf.get_rect()
player = Player()
screen.blit(player.surf, player.rect)

2) Рисование непосредственно на дисплей.

pygame.draw.rect(screen, color, (x,y,width,height), thickness)

В чем разница между два метода и какой предпочтительнее и почему?

Также какой из них быстрее?

1 Ответ

0 голосов
/ 15 апреля 2020

Если вы хотите работать с pygame.sprite.Group, вам следует продолжить работу с pygame.sprite.Sprite объектом, поскольку вы можете добавить объект в группу.
Когда вы используете группу, затем вы можете использовать .update() для обновления всех спрайтов в группе и метод draw() для отрисовки всех спрайтов в группе.

Но учтите, что метод draw() для pygame.sprite.Group использует атрибут .rect и .image объекта, поэтому вам нужно переименовать .surf в .image. Например:

class Player(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__() 
        self.image = pygame.Surface((75, 25))
        self.image.fill((255, 255, 255))
        self.rect = self.image.get_rect(center = (x, y))

    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_d]
            self.rect.x += 1
        # [...]
screen = pygame.display.set_mode((width, height))

# [...]

my_group = pygame.sprite.Group()
my_group.add(Player(player_x, player_y))

while True:
    # [...]

    my_group.update()

    # [...]

    my_group.draw(screen)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...