もっとも単純な画面作成プログラム
Pygameの関数群を使うためには、まず画面を表示しなければなりません。
以下のプログラムは、Pygameの骨格となる処理だけを書いています。
このプログラムを動かすと、画面が一瞬出てすぐ消えます。
1 2 3 4 5 6 7 8 9 10 11 |
### インポート import pygame ### モジュール初期化 pygame.init() ### 画面設定 pygame.display.set_mode((640,400)) ### モジュール終了 pygame.quit() |
モジュールをインポートする
まず、Pygameのモジュールを使うためにインポートします。
なお、上記のプログラムではPygameの定数を使っていないので、「from pygame.locals import *」は書いていません。
モジュールを初期化する
インポートしたPygameのモジュールを全て初期化する関数です。
pygame.init()
pygame.init()は、内部で別の初期化モジュールを呼び出しているので、pygame.init()を使わずに直接必要なモジュールを初期化することもできます。
また、戻り値で初期化に成功したモジュール数とエラーになったモジュール数が分かります。
以下の例は、初期化に成功したモジュールが6個、エラーになったモジュールは0個になります。
実行例
>>> import pygame
>>> pygame.init()
(6, 0)
描画用のウインドウや画面を初期化する
描画する画面の幅、高さやディスプレイの種類などを設定する関数です。
pygame.display.set_mode((幅,高さ), ディスプレイの種類, 色のビット数)
戻り値で表示する画面を返します。
幅、高さを指定しなかった場合は、パソコンの画面と同じサイズになります。
ディスプレイの種類は、以下のものが設定できます。
また、ディスプレイの種類は、(pygame.RESIZABLE|pygame.NOFRAME)のように記述することで、複数組み合わせることもできます。
何も指定しなければ、ソフトウェア側での通常のウインドウ画面が表示されます。
pygame.FULLSCREEN | フルスクリーンのディスプレイを作成 |
pygame.DOUBLEBUF | ハードウェア側での高速描写処理やOpenGLを使用 |
pygame.HWSURFACE | ハードウェア側での高速描写処理を使用(フルスクリーンモードのみ) |
pygame.OPENGL | OpenGLでの描写処理 |
pygame.RESIZABLE | ウィンドウサイズを変更可能 |
pygame.NOFRAME | ウィンドウの外枠やGUI部品を非表示 |
色のビット数は、デフォルトで最適化されているので、通常は設定する必要はありません。
モジュールの初期化を解除する
初期化されているPygameのモジュールを解除する関数です。
pygame.quit()
Pythonのインタプリターが終了すると自動的に pygame.quit() が呼び出されるので、明示的に書く必要はありませんが、お約束として書いておきます。
画面を表示したままにする
上記のプログラムでは、画面が一瞬で閉じてしまうので、画面を表示したままになるように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
### インポート import pygame from pygame.locals import KEYDOWN ### モジュール初期化 pygame.init() ### 画面設定 pygame.display.set_mode((640,400)) ### 無限ループ while True: ### イベント処理 if pygame.event.peek(KEYDOWN): break ### 終了処理 pygame.quit() |
指定したイベントかどうか調べる
指定した種類のイベントタイプがイベントキューにあった場合は、trueを返す関数です。
pygame.event.peek(イベント名)
上記のプログラムでは、イベントキューにKEYDOWNイベントがあったら、ループを抜けて処理を終了します。
なんらかのキーが押された時に、KEYDOWNイベントが発生します。
エスケープキーが押された時に画面を終了する
上記のプログラムでは、どんなキーが押されても画面が閉じてしまいます。
エスケープ(ESC)キーが押された場合のみ、画面を終了するように修正します。
以下のプログラムは、イベントキューからイベントを取得して、押されたキーがエスケープ(ECS)キーだった場合のみ、forループとwhileループを抜けて処理を終了します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
### インポート import pygame from pygame.locals import KEYDOWN,K_ESCAPE ### モジュール初期化 pygame.init() ### 画面設定 pygame.display.set_mode((640,400)) ### 無限ループ while True: ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: break else: continue ### whileループ終了 break ### 終了処理 pygame.quit() |
イベントを取得する
イベントキューからイベントを取得する関数です。
イベントオブジェクトの key という変数は、イベントタイプが KEYDOWN の時に使われ、どのキーが押されたのかが分かります。
pygame.event.get()