¿Qué hace pygame.sprite.Group()?
Estoy siguiendo un video sobre pygame y vi este código.
crosshair = pygame.sprite.Group()
¿Alguien podría explicarme esto?
Lea la documentación de pygame.sprite.Group
.
pygame.sprite.Group.update()
y pygame.sprite.Group.draw()
son métodos proporcionados por pygame.sprite.Group
.
El primero delega el al update
método del pygame.sprite.Sprite
s contenido : debes implementar el método.
pygame.sprite.Group.update()
Llama al método update() en todos los Sprites del grupo.
Este último utiliza los atributos image
y rect
de los pygame.sprite.Sprite
mensajes de correo electrónico contenidos para dibujar los objetos; debe asegurarse de que los pygame.sprite.Sprite
mensajes de correo electrónico tengan los atributos requeridos.
pygame.sprite.Group.draw()
Dibuja los Sprites contenidos en el argumento Superficie. Esto utiliza el atributo Sprite.image para la superficie de origen y Sprite.rect para la posición.
Los Sprites en los Grupos pueden ser eliminados y así destruidos llamando a pygame.sprite.Sprite.kill
. Cuando ya no se hace referencia al objeto, se destruye:
El Sprite se elimina de todos los Grupos que lo contienen. Esto no cambiará nada sobre el estado del Sprite. Es posible continuar usando el Sprite después de que se haya llamado a este método, incluso agregarlo a Grupos.
Ver también Grupos de Sprites
Ejemplo mínimo:
import pygame
class Player(pygame.sprite.Sprite):
def __init__(self, center_pos):
super().__init__()
self.image = pygame.Surface((40, 40))
self.image.fill((255, 255, 0))
self.rect = self.image.get_rect(center = center_pos)
class Bullet(pygame.sprite.Sprite):
def __init__(self, center_pos):
super().__init__()
self.image = pygame.Surface((20, 10))
self.image.fill((0, 255, 255))
self.rect = self.image.get_rect(center = center_pos)
def update(self):
self.rect.x += 10
if self.rect.right > 300:
self.kill()
pygame.init()
window = pygame.display.set_mode((400, 300))
clock = pygame.time.Clock()
player = Player((25, window.get_height() // 2))
all_sprites = pygame.sprite.Group(player)
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
all_sprites.add(Bullet(player.rect.center))
all_sprites.update()
print(len(all_sprites))
window.fill(0)
pygame.draw.rect(window, (255, 0, 0), (300, 0, 10, window.get_height()))
all_sprites.draw(window)
pygame.display.flip()
pygame.quit()
exit()