微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pygame.QUIT 初始化时如何开始倒计时

如何解决pygame.QUIT 初始化时如何开始倒计时

我有一个球动画,我想要它运行直到你关闭程序(也就是直到 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。