Почему не работает в Pygame остановка событий?

хочу попробовать сделать мини-игру на своем телефоне, и я хотел бы, чтобы команда time sleep останавливала весь код, но пока она работает, я могу нажимать на кнопки, поэтому событии работают, то есть они не останавливают, и когда я нажимаю кнопку, то при продолжении команды будет не 20 жизней, а меньше, столько, сколько я снял во время паузы, извините за кривоватый код) помогите пожалуйста, перепробовал все что мог, вот код:
<
import pygame
import time
import sys
import random

WIDTH = 700
HEIGHT = 1350
Fps = 30
Red = (255, 0, 0)
Black = (0, 0, 0)
White = (255, 255, 255)
Blue = (0, 0, 255)
Green = (0, 255)
LigthBlue = (100, 200, 255)
a = 260
b = 1150
pygame.init()
pygame.mixer.init()

class Mob(): 
    
    def __init__(self, hp= 20, color=Red):
        self.hp = hp
        self.color = color
        
    def object(color):
        pygame.draw.rect(screen, Red, (40, 70, 640, 800))
        

f = pygame.font.SysFont('calibri', 42)
f1 = pygame.font.SysFont('', 100)

ButtonText = f.render ('Ударить', 1, Black)
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption('clicker mobs')
clock = pygame.time.Clock()
m = Mob(20, Red)
while 1:
    text = f.render(f'Hp:{m.hp}', 1, Blue)
    textEnd = f1.render ('Вы победили',1, White)
    posEnd = text.get_rect(center = (WIDTH/2-190, HEIGHT/2-100))
    pos1 = text.get_rect (center = (330, 1200))
    pos = text.get_rect (center = (350, 35))
    fin = pygame.mouse.get_pos()
    screen.fill(LigthBlue)
    clock.tick(Fps)
    pygame.draw.rect (screen, Blue, (260,1150,220,100))
    screen.blit (text, pos )
    screen.blit(ButtonText, pos1 )
    m.object()
    
    for event in pygame.event.get():
        if event == pygame.QUIT:
            sys.exit()
        if event.type == pygame.FINGERDOWN:
             if a<=fin[0]<=a+220 and b<=fin[1]<=b+100:
                 m.hp -=2
                 if m.hp<=0:
                     screen.blit (textEnd, posEnd)
                     pygame.display.flip()
                     pygame.time.delay(1000)
                     m.hp =20
    pygame.display.flip()
>
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 1
ZERGeich
@ZERGeich
Теоретически pygame.time.delay - должно отрабатывать.
По твоему коду - он должен ждать секунду.

Внимание, вопрос: Код заходит вообще в то условие где у тебя ожидание прописано?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы