実際にWindowの出るPythonスクリプトが登場のようです。
まずコードを眺めてみましょう。
simpleWindow.py
import pygame from pygame.locals import * class App: def __init__(self): self._running = True self._display_surf = None self.size = self.weight, self.height = 640, 400 def on_init(self): pygame.init() self._display_surf = pygame.display.set_mode(self.size, pygame.HWSURFACE | pygame.DOUBLEBUF) self._running = True def on_event(self, event): if event.type == pygame.QUIT: self._running = False def on_loop(self): pass def on_render(self): pass def on_cleanup(self): pygame.quit() def on_execute(self): if self.on_init() == False: self._running = False while( self._running ): for event in pygame.event.get(): self.on_event(event) self.on_loop() self.on_render() self.on_cleanup() if __name__ == "__main__" : theApp = App() theApp.on_execute()
1.beginのながながとした解説でなんとなく見方は解るかもしれません。
でもいきなりボリュームアップしましたね。
重要な部分を見て行きます。
def __init__(self):
という部分。
これは、C++とかJavaでいうところのコンストラクターです。
クラスのインスタンスが作られた際、そのインスタンスで自動的に実行される部分になります。
その次に実行されるのは、theApp.on_execute()によって呼び出される
def on_execute(self):
ここ。
on_initを呼び出して やっとでてきたPyGameの名前。初期化しています。
_display_surfに画面サイズを設定して、ここで始めてウィンドウが表示されてる感じになるでしょうか。
初期化がうまくいけばメインループを開始、そうでなければ on_cleanupを呼び出して終了していますね。
メインループではイベントを監視してちょいちょいイベント処理を行っています。
イベントドリブン型かと思いきや割と泥臭いことをしていて安心します。
これといって特筆すべきことはないようです。
見慣れないのは
self.size = self.weight, self.height = 640, 400
これでしょうかね。
いわゆる構造体のようなものです。
今はこういうものだと思っておきましょう。
python simpleWindow.py
として実行してやると真っ黒い画面のウィンドウが起動して、ウィンドウクローズボタンで終了します。
ふと思ったのですが、とっても回りくどくてPythonの入門向きなコードではないような(
とりあえず始めてしまったので続けますがっ。
暗黙の了解みたいなものがPython自体に多いのでその辺でわたし自身も引っかかるかも。
生温かい目で見守ってください(汗