我正在制作一个游戏来结束我的编程课程,我有时会显示一些较长的场景,如果有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
答案 0 :(得分:1)
如果用return
实际退出循环而不是只打印你得到退出事件呢?
目前,您只退出closesearcher
中的循环,但不退出gamescene
。
另外,我认为event.get()
会删除该事件。所以在另一个循环中调用get将不会返回任何内容。您需要设置全局标记playerWantsToQuit
并使用它而不是本地running
变量。