是否可以在没有线程的情况下同时运行两个函数?

时间:2017-04-06 19:03:21

标签: python multithreading syntax timer pygame

我知道答案是否定的,但我只是确定。实际上,我已经完成了我的第一个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个函数。或者我如何在与游戏()循环相同的循环中制作一个计时器而不减慢速度(技术上如果计算在帧中则可能,但我更喜欢秒)。谢谢大家:))

0 个答案:

没有答案