pygame.sprite.Group()

меня звать Даниил. Я хочу что бы, спустя время, появлялся объект и через время пропадал, но у меня не получается. Пробовал удалить группу, но все равно не получается, помогите пожалуйста.)

# Игра Shmup - 3 часть
# Cтолкновения и стрельба
import pygame
import random

WIDTH = 1600
HEIGHT = 800
FPS = 60

# Задаем цвета
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
YELLOW = (255, 255, 0)

# переменные 
timer_games = 0
#разное 
pygame.time.set_timer(pygame.USEREVENT, 1000)# таймер , смотреть инструкцию
lll = 60
# Создаем игру и окно
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Shmup!")
clock = pygame.time.Clock()

class Mob3(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((60, 900))
        self.image.fill(YELLOW)
        self.image.set_alpha(150)
        self.rect = self.image.get_rect()
        self.rect.centerx = lll
        self.rect.centery = HEIGHT / 2
        #self.rect.y = random.randrange(-100, -40)
        self.speedy = 4

all_sprites = pygame.sprite.Group()
mobs1 = pygame.sprite.Group()
# Цикл игры
running = True
while running:
    clock.tick(FPS)
    for e in pygame.event.get():#запускает таймер ,каждую секунду он считает
        if e.type == pygame.USEREVENT: # только в его границах работает таймер 
            timer_games += 1
            if timer_games == 3:
                for i in range(8):
                    q = Mob3()
                    all_sprites.add(q)
                    mobs1.add(q)
                    lll += 200

        if e.type == pygame.QUIT:
            running = False 
        elif e.type == pygame.KEYDOWN:
            if e.key == pygame.K_SPACE:
                player.shoot()
    # Обновление
    all_sprites.update()
    # Найти все спрайты, которые сталкиваются между двумя группами.

    # Рендеринг
    screen.fill(BLACK)
    all_sprites.draw(screen)
    # После отрисовки всего, переворачиваем экран
    pygame.display.flip()

pygame.quit()

Ответы (1 шт):

Автор решения: S. Nick

Я не уверен, что правильно вас понял, но попробуйте так:

import pygame
import random

WIDTH  = 1200
HEIGHT =  400
FPS    =   60

# Задаем цвета
WHITE  = (255, 255, 255)
BLACK  = (0, 0, 0)
RED    = (255, 0, 0)
GREEN  = (0, 255, 0)
BLUE   = (0, 0, 255)
YELLOW = (255, 255, 0)

# переменные 
timer_games = 0
#разное 
pygame.time.set_timer(pygame.USEREVENT, 1000)     # таймер , смотреть инструкцию
lll = 60

# Создаем игру и окно
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Shmup!")
clock = pygame.time.Clock()


class Mob3(pygame.sprite.Sprite):
    def __init__(self, lll):                                        # +++ lll
        super().__init__()                                          # +++

        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((60, 900)) 

#        self.image.fill(YELLOW)
        c = random.sample([YELLOW, BLUE, GREEN, RED, WHITE], 1)[0]  # +
        self.image.fill(c)                                          # +

        self.image.set_alpha(150)
        self.rect = self.image.get_rect()
        self.rect.centerx = lll
        self.rect.centery = HEIGHT / 2
        # self.rect.y = random.randrange(-100, -40)
        self.speedy = 4

all_sprites = pygame.sprite.Group()
mobs1 = pygame.sprite.Group()

running = True
while running:
    clock.tick(FPS)
    for e in pygame.event.get():         # запускает таймер ,каждую секунду он считает
        if e.type == pygame.USEREVENT:   # только в его границах работает таймер 
            timer_games += 1

            all_sprites = pygame.sprite.Group()                    # +++
            lll = 60                                               # +++

#            if timer_games == 3:                                  # ---                    
            if timer_games % 3 == 0:                               # +++
                for i in range(8): 
                    q = Mob3(lll)                                  # +++ lll
                    all_sprites.add(q)
                    mobs1.add(q)
                    lll += 150  # 200

        if e.type == pygame.QUIT:
            running = False 
        elif e.type == pygame.KEYDOWN:
            if e.key == pygame.K_SPACE:
                player.shoot()

    # Обновление
    all_sprites.update()
    # Найти все спрайты, которые сталкиваются между двумя группами.

    # Рендеринг
    screen.fill(BLACK)
    all_sprites.draw(screen)
    # После отрисовки всего, переворачиваем экран
    pygame.display.flip()

pygame.quit()

введите сюда описание изображения

→ Ссылка