我知道答案是否定的,但我只是确定。实际上,我已经完成了我的第一个pygame项目。说实话,我为此感到自豪。该程序首先为不同的精灵定义一堆类。然后它定义了三个函数。一个用于选项屏幕,一个用于游戏屏幕,一个用于计时器。我想要的是能够同时运行timer()函数和game()函数。我试过线程:
t1 = Thread(target=game)
t2 = Thread(target-timer)
while True:
start_screen.draw(window)
clock.tick(30)
events = pygame.event.get()
for event in events:
if event.type == QUIT:
exit()
elif event.type == MOUSEBUTTONDOWN:
mousepos = pygame.mouse.get_pos()
if button.rect.collidepoint(mousepos):
start_screen.remove(button)
start_screen.remove(button1)
window.fill(white)
t1.start()
t2.start()
t1.join()
window.fill(white)
start_screen.add(button)
start_screen.add(button1)
if button1.rect.collidepoint(mousepos):
options()
time.sleep(3)
window.fill(white)
pygame.display.update()
如你所见,if语句检查游戏按钮是否被按下,然后它同时运行计时器和游戏。这有效,但也会导致许多故障并停止循环,因此game()中的任何事件处理都不起作用。它也使Pygame窗口滞后很多。当我只使用game()
运行相同的代码时,它的效果非常好,后退按钮,开始按钮和选项按钮都可以工作,但是计时器保持为0。
所以在经过漫长而无聊的解释后,我的问题是:有没有一种方法可以在没有线程的情况下同时运行2个函数。或者我如何在与游戏()循环相同的循环中制作一个计时器而不减慢速度(技术上如果计算在帧中则可能,但我更喜欢秒)。谢谢大家:))