Я знакомлюсь с Pygame
и хочу написать простую игру, у меня уже есть следующий код:
import sys, pygame
pygame.init()
size = width, height = 640, 480
speed = [2, 2]
black = 0, 0, 0
screen = pygame.display.set_mode(size)
ball = pygame.image.load("intro_ball.gif")
ballrect = ball.get_rect()
bar = pygame.image.load("bar_low.gif")
barrect = bar.get_rect(center=(320,475))
over = pygame.image.load("game_over.gif")
overrect = over.get_rect(center=(width/2, height/2 ))
while 1:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
screen.fill(black)
screen.blit(over, overrect)
pygame.display.flip()
pygame.time.delay(2000)
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT] and barrect.right < width:
barrect = barrect.move(4, 0)
screen.blit(bar, barrect)
pygame.display.update()
if keys[pygame.K_LEFT] and barrect.left > 0:
barrect = barrect.move(-4, 0)
screen.blit(bar, barrect)
pygame.display.update()
ballrect = ballrect.move(speed)
if ballrect.left < 0 or ballrect.right > width:
speed[0] = -speed[0]
if ballrect.top < 0 or (ballrect.bottom > height - bar.get_height() and ballrect.left < barrect.right and ballrect.right > barrect.left):
speed[1] = -speed[1]
if ballrect.bottom > height:
#irrelevant
screen.fill(black)
screen.blit(ball, ballrect)
screen.blit(bar, barrect)
pygame.display.flip()
Он отлично работает, кроме части «если нажата w
»: нужно заполнить черным, показать изображение «game_over
» в течение двух секунд и продолжить работу. Вместо этого он замораживает все на две секунды и продолжает работать, как будто следующие строки никогда не существовали.
screen.fill(black)
screen.blit(over, overrect)
pygame.display.flip()
Не могли бы вы сказать, что я делаю не так?