2017-02-07 1 views
0

Ich habe vor kurzem angefangen, python pygame zu lernen und bin schon am Anfang festgefahren.Python pygame event - wie es funktioniert

Ich habe follwoing Code hier:

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

Ich verstehe nicht, wie man die "für Ereignis in pygame.event.get()" funktioniert. Was für eine Art von Schleife ist das? Es sagt nicht wie oft es Schleifen muss, es gibt keine Reichweite und "Ereignis" ist nur eine Variable, also kann jemand erklären, wie es funktioniert?

Wie funktioniert event.type? Wieder ist das Ereignis nur eine Variable, wie erkennt Python, dass dies ein Ereignis ist? Ich hätte es Pink_Panther oder so nennen können.

Vielen Dank im Voraus. Bitte wenn möglich, erkläre es auf die leichte Art, wie ich ein Anfänger bin.

DANKE

+3

Ich empfehle Ihnen, StackOverflow eigene [Pygame Documentation] zu lesen (http://stackoverflow.com/documentation/pygame/topics) –

+0

Dies funktioniert wie jede generische for-Schleife in Python. Python ist eine "for each" -Schleife und durchläuft alle Elemente in einer Liste, Tupel, String, Range-Objekt usw. Ihre Schleife durchläuft alle Elemente, die Sie von 'pygame.event.get()' erhalten viele Ereignisse von wenigen Ereignissen sein. Jedes Element ist ein 'EventType' und hat das Attribut' type'. [Hier] (http://stackoverflow.com/documentation/pygame/5110/event-handling/18046/event-loop#t=20170207145554637194) ist eine tiefere Erklärung. –

Antwort

0

Ich schlage vor, zu https://www.pygame.org/docs/index.html, die Heimat von allen offiziellen Pygame Dokumentation gehen.

Die Schleife, nach der Sie fragen, funktioniert genau wie eine normale Python for-Schleife. pygame.event.get() gibt eine Liste zurück (EventList, um genau zu sein, aber das spielt jetzt keine Rolle). Wenn eine for-Schleife eine Liste erhält, durchläuft sie jeweils ein Element und fügt sie in die angegebene Variable ein: in diesem Fall event. Die Liste, die die Funktion zurückgibt, ist voll von pygame.event.Event oder pygame.event.EventType Objekten. Daher wird jede Schleife, das früheste nicht verarbeitete Ereignis, in die event Variable eingefügt, und sie durchläuft den Code, um dieses Ereignis zu behandeln. Hier sind die Schritte, die sie im Vergleich zu einem normalen for-Schleife nimmt:

Pygame Ereignisschleife:

  1. pygame.event.get() gibt eine Liste mit allen nicht verarbeiteten Ereignisse.
  2. Für jedes Ereignis in der Liste zurück, um das Ereignis zu der Variablen "Ereignis" kopieren und führen Sie den folgenden Code ein:
  3. Code hier

Normale for-Schleife:

  1. Kopieren Sie für jeden Wert in der Liste oder im Tupel den Wert in die Variable und führen Sie den folgenden Code aus:
  2. Ihr Code hier

Beachten Sie, dass eine häufige Form einer for-Schleife ist:

for variable in range(stuff): 

range() ist eigentlich eine Funktion, die eine Liste zurückgibt! Öffnen Sie den Terminal und geben Sie Folgendes:

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

pygame.event.get() gibt eine Liste in der gleichen Art und Weise range() eine Liste zurückgibt! In Python 3 gibt range() jedoch keine Liste zurück, sondern ein Bereichsobjekt. Das Prinzip ist jedoch das gleiche.

Wenn Sie weitere Erläuterungen benötigen, lassen Sie es mich in den Kommentaren wissen.

+0

Hat dies Ihre Frage beantwortet, oder benötigen Sie weitere Hilfe? – Douglas