2

見つけられるものはすべて読み、pyglet でのゲーム ループの多くの例を見てきましたが、それがどのように機能しているのか、正確に何が起こっているのかはまだわかりません。

(これらは私が読んだ記事です...)

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()

実際にはすべて機能することは知っていますが、よくわかりません。そして、仕組みをよく理解するまで、pyglet を最大限に活用することはできないと感じています。

pyglet に実行するように指示すると、... イベント (game_window) を持つオブジェクトが検出され、ハンドラーをアタッチした関数が何らかの方法で検出されて呼び出されますか? どのスコープ/名前空間でそれらを見つけるかをどのように知るのですか? イベント ハンドラーを配置する場所が見つかるまで、コード全体をスキャンするだけですか? それらをループしますか?ループの開始位置と停止位置をどのように知るのでしょうか? それはどのように機能しますか?

ありがとうございました!

4

1 に答える 1

2

遊ぼう:

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!
>>>

もちろん、彼らはおそらく少し違ったやり方をしているでしょうが、基本的な考え方を理解していただければ幸いです。

于 2013-06-07T01:12:01.437 に答える