2017-02-07 19 views
0

Я начал недавно изучать pygame python, и я застрял уже в начале.Python pygame event - как это работает

Я follwoing код здесь:

while not gameExit: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
       gameExit = True 

Я не понимаю, как "для события в pygame.event.get) (" работы. Что это за петля? Он не говорит, сколько раз ему нужно зацикливать, нет диапазона, а «событие» - это просто переменная, так кто-нибудь может объяснить, как это работает?

Как работает event.type? Снова событие - это просто переменная, как Python признает, что это событие? Я мог бы назвать его Pink_Panther или около того.

спасибо, что заранее. По возможности, объясните это простым способом, поскольку я новичок.

СПАСИБО

+3

Я предлагаю вам ознакомиться с самой собственной [Pygame Documentation] для StackOverflow (http://stackoverflow.com/documentation/pygame/topics) –

+0

Эта работа как любое обобщение для цикла в Python. Python - это цикл «для каждого» и будет проходить через все элементы в списке, кортеже, строке, объекте диапазона и т. Д. Ваш цикл будет проходить через все элементы, которые вы получаете от 'pygame.event.get()', что могло бы быть много событий из нескольких событий. Каждый элемент является «EventType» и имеет атрибут 'type'. [Здесь] (http://stackoverflow.com/documentation/pygame/5110/event-handling/18046/event-loop#t=20170207145554637194) является более глубоким объяснением. –

ответ

0

Я предлагаю идти к https://www.pygame.org/docs/index.html, дом всей официальной документации Pygame.

Петля, о которой вы просите, работает так же, как обычный цикл Python. pygame.event.get() возвращает список (EventList, если быть точным, но это не имеет значения прямо сейчас). Если для цикла for задан список, он выполняет итерацию через него по одному элементу за раз и помещает его в указанную переменную: в этом случае event. Список, который возвращает функция, заполнен pygame.event.Event или pygame.event.EventType объектов. Таким образом, каждый цикл самый ранний необработанный случай помещается в переменную event, и он обрабатывает код для обработки этого события. Вот шаги, которые он принимает, по сравнению с нормальным для цикла:

Pygame цикл событий:

  1. pygame.event.get() возвращает список всех необработанных событий.
  2. Для каждого события в возвращаемом списке, скопируйте событие в переменной «событие» и выполнить следующий код:
  3. ваш код здесь

Нормальный цикл:

  1. Для каждого значения в списке или кортежей скопируйте значение в переменную и выполните следующий код:
  2. Ваш код здесь

Обратите внимание, что общая форма для цикла является:

for variable in range(stuff): 

range() фактически является функцией, которая возвращает список! Откройте терминал и введите следующую команду:

>>> range(5) 
[0,1,2,3,4] 

pygame.event.get() возвращает список таким же образом range() возвращает список! Однако в Python 3 range() не возвращает список, а скорее объект диапазона. Однако принцип тот же.

Если вам нужно больше пояснений, просто дайте мне знать в комментариях.

+0

Это ответ на ваш вопрос, или вам нужна дополнительная помощь? – Douglas