Вопрос задан 07.06.2023 в 18:11. Предмет Информатика. Спрашивает Петренко Катя.

Помогите 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 и ещё скажите где это писать(между какими строчками).
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Чтобы монеты пропадали через определенное время, вам понадобится добавить таймер для каждой монеты и проверять, истекло ли время ее существования. Вот измененный код с добавленной логикой времени:

python
import pygame import random import time 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) self.creation_time = time.time() # Запоминаем время создания монеты def update(self): self.rect.y += 5 if time.time() - self.creation_time >= 5: # Проверяем, прошло ли 5 секунд с момента создания монеты self.kill() 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()

В этом коде каждая монета запоминает время своего создания при инициализации с помощью self.creation_time = time.time(). Затем в методе update() проверяется, прошло ли 5 секунд с момента создания монеты с помощью if time.time() - self.creation_time >= 5, и если условие выполняется, монета удаляется с помощью self.kill().

Таким образом, монеты будут пропадать через 5 секунд после создания. Вы можете изменить значение 5 на любое другое, если вам нужно другое время существования монеты.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос