2013-06-07 2 views
1

Я прочитал все, что могу найти, и посмотрел на множество примеров игрового цикла на пиглете, но я все еще не уверен, КАК он работает или что именно происходит.Как точно работает петля игры для пинглета?

(Эти статьи я читал ...)

http://www.pyglet.org/doc/programming_guide/the_application_event_loop.html

http://www.pyglet.org/doc/api/toc-pyglet.event-module.html

Я понимаю, что основная структура что-то вроде этого (это просто пример):

INITIALIZE GAME WINDOW 
game_window = pyglet.window.Window(800, 600) 

ATTACH EVENT HANDLERS 
@game_window.event 
def on_draw(): 
    game_window.clear() 
    player_sprite.draw() 

START PYGLET 
pyglet.app.run() 

Я знаю, что все это работает на практике, но я не совсем понимаю. И я чувствую, что, пока я не буду хорошо разбираться в механике, я не смогу полностью использовать пиглет.

Итак, вы говорите, что пинглет запускается и ... он находит объекты, имеющие события (game_window), и он каким-то образом находит и вызывает те функции, к которым вы прикрепляли обработчики? Как он узнает, в какой области/пространстве имен их найти? Проверяет ли он весь ваш код до тех пор, пока не найдет, где вы разместите обработчики событий? Проводят ли они их? Как он знает, с чего начать и остановить цикл? Как это работает???

Спасибо!

+1

'@ game_window.event' может делать практически все. его не нужно искать - это не похоже на аннотации в java. это, по сути, команда. – Elazar

ответ

1

Давайте играть:

class Window: 
    def __init__(self, x, y): 
     global app 
     app = self 
    def event(self, func): 
     self.what_todo = func 
    def run(self): 
     self.what_todo() 

>>> game_window = Window(800, 600) 
>>> 
>>> @game_window.event 
... def on_draw(): 
...  print("I am drawing!") 
... 
>>> app.run() 
I am drawing! 
>>> 

Конечно, они, вероятно, делают вещи немного по-другому, но я надеюсь, что вы получите основную идею.

+1

Спасибо! Теперь я понимаю, что я совершенно не понимаю, как работают декораторы. Я поговорил с другом моего программиста (не-Python), прочитал главы о закрытиях и декораторах в «Наступая на Python, том 2» и размышлял над вашим ответом в течение двух дней ... И теперь я понимаю! Спасибо. – Josh

Смежные вопросы