Pygameの基本コードの読み解き
前回示したPygameの基本コードをふたたび示します。今回学んだ内容で読み解くことができます。一部足りない部分を補いつつ、処理の内容を確かめましょう。
import pygame # Pygameをインポート
pygame.init() # Pygameを初期化
screen = pygame.display.set_mode((800, 600)) # 画面作成
image = pygame.image.load("icon.png") # 画像読み込み
running = True # 実行継続フラグ
while running:
for event in pygame.event.get(): # イベント
if event.type == pygame.QUIT: # 種類がQUITなら
running = False # 終了
screen.fill((0, 0, 0)) # 画面を塗りつぶす
screen.blit(image, (32, 32)) # 描画
pygame.display.flip() # 画面フリップ
pygame.quit() # Pygameを終了
冒頭は、前回読み解いた部分です。Pygameをインポートして初期化します。
import pygame # Pygameをインポート pygame.init() # Pygameを初期化
画面の作成
続いて画面の作成です。
screen = pygame.display.set_mode((800, 600)) # 画面作成
(800, 600)は、横幅と高さの2つの整数を持つタプルです。このタプルを引数にしてpygame.display.set_mode()関数を実行します。
この.で区切られている関数は、pygameのdisplayのset_mode()関数という意味です。この関数を実行した結果の戻り値(ウィンドウの描画先)を、=で、変数screenに代入します。
変数screenには、Surfaceオブジェクトというものが入ります。オブジェクトは、変数と関数を持ったデータ構造です。オブジェクトの変数や関数は、.を使ってscreen.変数名、screen.関数名()と書くことで利用できます。
画像の読み込み
次は画像の読み込みです。
image = pygame.image.load("icon.png") # 画像読み込み
"icon.png"は、ファイルのパスを表すテキストです。このテキストを引数にしてpygame.image.load()関数を実行します。この関数はpygameのimageのload()関数という意味です。この関数を実行した結果の戻り値(読み込んだ画像)を、変数imageに代入します。
変数imageには、読み込んだ画像から作られたSurfaceオブジェクトが入ります。
Pygameの基本ループ
次はwhile文です。
running = True # 実行継続フラグ
while running:
# 処理のグループ
# runningがTrueのあいだ繰り返す
pygame.quit() # Pygameを終了
変数runningに、真偽値Trueを代入します。そして、while文で、この変数runningの値がTrueのあいだ、インデントした処理のグループを繰り返します。
変数runningの値がFalseに変更されたら、while文を抜けて、pygame.quit()関数を実行します。pygame.quit()関数が実行されたら、Pygameは終了します。
イベント処理
次はwhile文の内側の、for文の処理です。
for event in pygame.event.get(): # イベント
if event.type == pygame.QUIT: # 種類がQUITなら
running = False # 終了
pygame.event.get()関数はリストを返します。for event in pygame.event.get():の部分は、for 変数 in リスト:という処理と同じです。
pygame.event.get()で得たリストには、ウィンドウ操作やキー操作、マウス操作といった、イベントの情報が入っています。イベントとは「発生した出来事」という意味です。
リストに入ったイベントを、for文で1つずつ見ていき、event.typeが、pygame.QUITと同じかを、比較演算子==で確認します。同じなら、if文のインデントした処理のグループを実行します。その際は、変数runningにFalseを代入します。
変数runningの値がFalseになると、先ほど説明したwhile running:の条件式がFalseになります。そのときはwhile文を抜けて、Pygameの処理を終了します。
画面の塗りつぶし
次は、画面を黒色で塗りつぶす処理です。
screen.fill((0, 0, 0)) # 画面を塗りつぶす
fill()というのは、PygameのSurfaceオブジェクトの関数の1つです。この関数は、色を表すタプルか、pygame.Colorオブジェクトを引数にします。ここでは色を表すタプルを引数にします。
色を表すタプルには、RGB(赤緑青)の3つの値を書きます。各色は0〜255(0が暗い、255が明るい)です。
画像の描画
次は、画像を描画します。
screen.blit(image, (32, 32)) # 描画
変数screen(ウィンドウの描画先)のblit()関数で画像を描画します。描画する画像は、変数image(読み込んだ画像)で、位置は(32, 32)のタプルです。
(32, 32)は、X座標とY座標を表します。画面の描画は、左上がX座標0、Y座標0になります。数学のグラフとはY座標の向きが異なるので注意が必要です。
画面のフリップ
次は、画面をフリップします。
pygame.display.flip() # 画面フリップ
pygame.display.flip()関数で、画面をフリップします。画面のフリップ(入れ替え)は、ゲーム開発でよく出てきます。描いている途中の画面は表示せずに、描き終わったところで表示させる手法です。こうすると、描きかけの状態を画面に表示せずに済みます。

まとめと次回
Pythonの文法を学び進めることで、Pygameの基本コードを読み解けるようになりました。次は自分で処理を書けるようになるための準備です。
ゲームを開発するには、自分で処理を組み立ててプログラムを書いていく必要があります。そこで次回は、自分で関数を作る「関数の定義」と、長くなったプログラムのファイルを分ける「モジュールやパッケージ」について学んでいきます。
また、ゲームを作る基本機能になる、Pygameの画像、図形、文字の描画、キーやマウスの入力、BGMやSEの再生について学んでいきます。
