Pygame のImport・Display・LoopとQuit

個人学習のNoteです。初心者向けにPythonの基本部分を紹介しています。

§パッケージ >Pygame >Pygame の設定・表示・ループ・終了


 Pygame はPython のゲーム開発環境用の外部パッケージの一つ。Pygame パケージのPCへのインストールと、プログラムでのインポートが必要です。

 Pygame 詳細は開発元のdocumentationを参照下 https://www.pygame.org/docs/

* Pygame のimport と初期化( init )

 最初にPygem をインポートして初期化します。原則、Pygame は初期化が必須です。 Program_1 の実行でPygamen が黒いdisplay Surfaceを表示します。 表示された画面をインスタンスとして変数scrに代入して、以降はdisplay Surface として使用します。 

【 program_1 に関連する pygame  】 ( ->は実行時の戻値)

program.init() -> (numpass, numfail) : 初期化モジュール。pygame は初期化してから使う。戻値は初期化したモジュールの成功数numpass,と失敗数numfail。初期化なしで動作するメソッドもある(init 自体など)。
program.display : ウインドウやスクリーンの表示を制御するモジュール。Pygame は1つのdisplay Surfaceに描いた画像だけが表示できる。display Surface への描画はそのままdisplay 標示画像になる。その他のSurface 上の描画はdisplay Surface 上に転載しないと表示されない。

program.display.set_mode(size=(0, 0)) -> Surface : 表示画面の大きさ(幅、高さ)をpygameの ドット数で指定するモジュール関数。戻り値で表示画面(display Surface)を設定する。PC上には黒いpygame 画面が表示される。

Surface : Pygame で使用する描画のための表面インスタンスを示す総称。Pygame の解説や紹介で使用している。Pygame のクラスとして生成や表示などのメソッドがある。変数やインスタンス名としてSurface やsurface を使えるが、混乱するので使わない方がいい。 

【 Program_1 ・Program_2 の実行で表示されるdisplay Surface 】

* Pygame のLoopと終了

  program_1をPython IDLEで実行すると黒い枠を標示して止まります。program_1ファイルの直接実行では黒い枠が表示されてすぐ消えます。pythonが自動的に終了したためです。

 ゲームプログラミングはゲームを楽しむ人に処理速度を合わせたり、PC操作で終了するようにします。このため、プログラムが終わらない、稼働を続けるフローが必要です。また、終了操作が必要となります。

 Pygame ウインドウの右上にあるx記号のクリックを終了設定したのがProgrm_2 です。

【 program_2 に関連する pygame  】  ( # pygame ループとshell終了判定の後)
get_init() -> bool :  pygame の現在の初期化状態を得る。戻り値はブール代数で初期化はTrue、初期解除はFalse。 
event.get() -> Eventlist : イベントキューからイベントをリストにして取り出す。取り出した後のイベントキューは空になる。 イベントキューは処理待ちデータの行列のこと。 
QUIT : 終了Eventを特定する種類識別子。Event.typeを使用して得たイベント種類が同じなら終了Eventとなる。 Pygame ウインドウの右上xで終了Eventが発生する。
time.Clock().tick(framerate=0) -> milliseconds : 時計を更新する。引数にフレームレート(1秒単位での更新回数)を設定することで、Pygame の動きを遅くすることが出来、CPU の占有時間を短くすることもできる。

* 描画と画面の更新

 Pygame の初期化と終了の間で描画コードを記載します。実行中に変らないものは初期化の後でwhileループの前に1回の描画を行います。 変化したり再描画が必要なコードはwhileループ中に記載することになります。 描画した後で、画面の更新をしないと表示は変化しないので、flipメソッドで更新します。

 タイトル(caption)と基本的の図形描画をしたのがProgrm_3です。

【 program_3 に関連する pygame 】 ( # キャプション、図形、画面更新の追加部分)
display.set_caption(title) -> None : Pygaem ウインドウの名前を引数に変更します。
draw.rect(Surface, color, rect) -> Rect : 四角を指定したSurfaceに描く。色は名称又はRGB配色のタプルで指定。引数rect で[開始x,開始y,x幅,y幅 ]を指定する。 引数パラメータで線幅、角の丸みなどが設定可能。返り値は描画の位置とサイズのRect書式。
draw.circle(Surface, color, center, radius) -> Rect: 円を指定したSurfaceに描く。色は名称又はRGB配色のタプルで指定。中心位置、半径の引数が必要。 引数パラメータで線幅や4分の1円の設定が可能。返り値は描画がちょうど入る四角範囲の位置とサイズのRect書式。
draw.polygon(Surface, color, points) -> Rect : 多角形を指定したSurfaceに描く。色は名称又はRGB配色のタプルで指定。多角形のコーナの位置を順番に(x,y)タプルで示す。コーナー位置指定は3か所以上必要。引数パラメータで線幅設定が可能。返り値は描画がちょうど入る四角範囲の位置とサイズのRect書式。
display.flip() -> None : Pygame ディスプレイ全体を更新。 display Surface の描画は、ディスプレイの更新が無いと表示されない。ディスプレイを部分的に更新する場合は、display.update() を使用する。

【 Program_3 の実行で表示されるdisplay Surface 】


以上

IG.Python Note

PythonプログラミングのためのTips集です。 趣味のPythonプログラミングをしていると、必要なプログラミング情報を自分で取集することが必要になります。 集めた情報を整理しておくと便利なので、個人的な学習メモとして記録を作りました。

0コメント

  • 1000 / 1000