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()
