问题描述
我有一个球动画,我想要它运行直到你关闭程序(也就是直到 pygame.QUIT 被激活)然后在 pygame.QUIT 被激活后,它会从关闭前的 10 秒开始倒计时。
(PS。如果你是这个网站的管理员,你发给我的其他帖子对我的具体问题没有帮助)
import pygame
import random
pygame.init()
window = pygame.display.set_mode([400,400])
c = pygame.time.Clock()
black = (0,0)
white = (255,255,255)
x = random.randint(10,390)
y = random.randint(10,390)
speed_x = random.randint(3,5)
speed_y = random.randint(3,5)
time = 10
#this is definitely wrong so this where I need help on
playing = True
while playing:
for event in pygame.event.get():
if event.type == pygame.QUIT:
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
time -= 1
print(time)
pygame.time.wait(1000)
if time == 0:
playing = False
x += speed_x
y += speed_y
window.fill((white))
pygame.draw.circle(window,black,(x,y),20)
if x > 390 or x < 10:
speed_x = speed_x * -1
if y > 390 or y < 10:
speed_y = speed_y * -1
c.tick(60)
pygame.display.flip()
解决方法
不要退出应用程序,而是启动倒数计时器。倒计时完成后退出应用程序。
见Countdown timer in Pygame。
最小示例:
import pygame
pygame.init()
window = pygame.display.set_mode((200,200))
clock = pygame.time.Clock()
font = pygame.font.SysFont(None,100)
counter = 0
text = font.render(str(10),True,(0,128,0))
timer_event = pygame.USEREVENT+1
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
counter = 10
pygame.time.set_timer(timer_event,1000)
elif event.type == timer_event:
counter -= 1
text = font.render(str(counter),0))
if counter == 0:
run = False
window.fill((255,255,255))
# draw game
# [...]
if counter > 0:
text_rect = text.get_rect(center = window.get_rect().center)
window.blit(text,text_rect)
pygame.display.flip()
pygame.quit()
exit()