Заморозка переменной через time.sleep() не работает
Форумчане, вечер добрый, есть функция shoot
, цикл которой должен засыпать на время, но при добавлении time.sleep()
весь код перестает работать.
def shoot():
global by
while by > -20:
by-=5
screen.blit(bulletimage, (bx+21, by))
by = 550
Вот весь код:
import pygame as pg
import time
pg.init()
screen = pg.display.set_mode((600,700))
FPS = 60
clock = pg.time.Clock()
ex = 0
enmoveside = 'right'
bx = 0
by = 550
px = 250
#Загрузка спрайтов
bulletimage = pg.image.load('bullet.png')
shipimage = pg.image.load('angryship.png')
friendlyshipimg = pg.image.load('friendlyship.png')
bgimg = pg.image.load('bg_cosmo.png')
#Функция выстрела
def shoot():
global by
while by > -20:
by-=5
screen.blit(bulletimage, (bx+21, by))
by = 550
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
pg.quit()
quit
#отрисовка бэкграунда
screen.blit(bgimg, (0, 0))
#Проверка нажатия мыши и запуск функции выстрела
mpressed = pg.mouse.get_pressed()
if mpressed[0]:
bx = px
shoot()
#отрисовка спрайтов
screen.blit(shipimage, (ex,250))
screen.blit(friendlyshipimg, (px,550))
#movement
key = pg.key.get_pressed()
if key[pg.K_a]:
px -= 5
if key[pg.K_d]:
px += 5
#barriers
if px < 0:
px = 0
if px > 500:
px = 500
#enemy move
if enmoveside == 'right':
ex += 2
if ex > 500:
enmoveside = 'left'
else:
ex -= 2
if ex < 0:
enmoveside = 'right'
clock.tick(FPS)
pg.display.update()
Источник: Stack Overflow на русском