Python Как сделать так ,чтобы монеты через время пропадали?
код:
import pygame
import random
pygame.init()
WIDTH = 800
HEIGHT = 600
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Собери монеты")
coin_images = {
1: pygame.image.load("coin1.png"),
2: pygame.image.load("coin2.png"),
3: pygame.image.load("coin3.png")
}
class Coin(pygame.sprite.Sprite):
def __init__(self, value, x, y):
pygame.sprite.Sprite.__init__(self)
self.value = value
self.image = coin_images[value]
self.rect = self.image.get_rect()
self.rect.center = (x, y)
def update(self):
self.rect.y += 5
all_coins = pygame.sprite.Group ()
score = 0
font = pygame.font.Font(None, 36)
def show_score():
text = font.render("Счет: " + str(score), True, BLACK)
screen.blit(text, (10, 10))
running = True
clock = pygame.time.Clock()
while running:
clock.tick(30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
pos = pygame.mouse.get_pos()
clicked_coins = [c for c in all_coins if c.rect.collidepoint(pos)]
for coin in clicked_coins:
score += coin.value
coin.kill()
if random.randint(0, 100) < 3:
value = random.choice([1, 2, 3])
x = random.randint(50, WIDTH - 50)
y = random.randint(-50, -10)
coin = Coin(value, x, y)
all_coins.add(coin)
all_coins.update()
screen.fill(WHITE)
all_coins.draw(screen)
show_score()
pygame.display.flip()
pygame.quit()
там должно быть что-то с time.slip и com_wat
и ещё скажите где это писать(между какими строчками).
Чтобы монеты пропадали через некоторое время, вам понадобится добавить соответствующую логику в код. Вот измененный код с комментариями, где нужно внести изменения:
import pygame
import random
import time
pygame.init()
# Остальной код
# Добавляем переменную для хранения времени последнего создания монеты
last_coin_spawn_time = time.time()
while running:
clock.tick(30)
# Остальной код
if random.randint(0, 100) < 3 and time.time() - last_coin_spawn_time > 2:
# Генерируем новую монету только если более 2 секунд с момента последнего создания
value = random.choice([1, 2, 3])
x = random.randint(50, WIDTH - 50)
y = random.randint(-50, -10)
coin = Coin(value, x, y)
all_coins.add(coin)
# Обновляем время последнего создания монеты
last_coin_spawn_time = time.time()
# Остальной код
pygame.quit()
Объяснение:
В этом коде добавлена переменная last_coin_spawn_time, которая хранит время последнего создания монеты. При каждой проверке на создание новой монеты, мы сравниваем разницу между текущим временем и временем последнего создания. Если больше 2 секунд (или другое значение, которое вам нужно), то создается новая монета.
Вы можете вставить этот блок кода после строки if event.type == pygame.MOUSEBUTTONDOWN: и перед строкой all_coins.update(). Это позволит проверять и создавать новые монеты каждый кадр игры.