Pygame另一个线程没有获得QUIT事件?

时间:2014-01-08 16:43:39

标签: python multithreading pygame

我正在制作一个游戏来结束我的编程课程,我有时会显示一些较长的场景,如果有QUIT事件,循环不会检查,然后停止一切并关闭循环。所以我认为多线程会有所帮助,但显然它似乎没有得到事件,我已经尝试打印 - 它获取事件,但它只是不能获得QUIT事件。

以下是代码:

from pygame import *
from threading import Thread

def closesearcher():
    global running
    while running:
        for i in event.get():
            if i.type == QUIT:
                print ("QUIT event in closesearcher")
                running = False
                quit()
                exit()
        clock.tick(60)

def main():
    init()
    #True while game is running
    global running
    running = True
    global window
    window = display.set_mode([640, 480])
    global clock
    clock = time.Clock()
    #Let's start closesearcher
    searcherclose = Thread(target = closesearcher)
    searcherclose.start()
    scenegame = gamescene()

def gamescene():
    #Render some scenery, wait for user to press button, etc in the following loop
    while running:
        for i in event.get():
            if i.type == QUIT:
                print ("QUIT event in game loop")
        clock.tick(60)

if __name__ == "__main__":
    main()

任何类似于我当前代码结构的解决方案? 注意:我使用Python 3.2

1 个答案:

答案 0 :(得分:1)

如果用return实际退出循环而不是只打印你得到退出事件呢?

目前,您只退出closesearcher中的循环,但不退出gamescene

另外,我认为event.get()会删除该事件。所以在另一个循环中调用get将不会返回任何内容。您需要设置全局标记playerWantsToQuit并使用它而不是本地running变量。