Как выйти из игрового цикла с несколькими событиями pygame, записанными в одну строку? - PullRequest
0 голосов
/ 22 февраля 2019

Я прошу прощения за смутное название, но по сути я хочу выйти из игрового цикла несколькими различными способами, используя pygame.Учитывая следующий код, я хочу избежать написания "running = False" дважды.Я знаю очень незначительную вещь, но я бы хотел написать условия «если» в меньшем количестве строк с «и» и «или», если это возможно.

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 голосов
/ 22 февраля 2019

Если целью является выход в любом из этих случаев, это будет работать:

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()
0 голосов
/ 22 февраля 2019

Используйте старую добрую булеву алгебру с паранами для группировки!

Я думаю, что это точно так же, но вы можете перепроверить:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...