如何用一行编写的多个pygame事件退出游戏循环?

时间:2019-02-22 17:59:41

标签: python pygame

我为模糊的标题表示歉意,但实际上,我想使用pygame以几种不同的方式退出游戏循环。 给定以下代码,我要避免两次编写“ running = False”。我知道这是非常小的事情,但是如果可能的话,我想用更少的“和”和“或”行来写“ if”条件。

running = True
while running:
    for e in pg.event.get():
        if e.type == pg.QUIT:
            running = False
        if e.type == pg.KEYDOWN:
            if e.key == pg.K_ESCAPE:
                running = False
pg.quit()

这是我第一次问一个问题,所以如果这太模糊或只是一个愚蠢的问题,请原谅。还是要谢谢你!

2 个答案:

答案 0 :(得分:0)

使用一些很好的旧布尔代数,并使用括号进行分组!

我认为这完全相同,但是您可能需要仔细检查:

while True:
    for e in pg.event.get():
        if e.type == pg.QUIT or (e.type == pg.KEYDOWN and e.key == pg.K_ESCAPE):
            pg.quit()

答案 1 :(得分:0)

如果目标是在上述两种情况下均退出,那么它将起作用:

running = True
while running:
    for e in pg.event.get():
        if e.type == pg.QUIT or  (e.type == pg.KEYDOWN and e.key == pg.K_ESCAPE):
            running = False

pg.quit()

您可以使用以下方法进一步缩短它:

while True:
    for e in pg.event.get():
        if e.type == pg.QUIT or  (e.type == pg.KEYDOWN and e.key == pg.K_ESCAPE):
            break

pg.quit()