pygame-1 ウィンドウ生成と画像表示

基本的なウィンドウの生成方法

# -*- coding: utf-8 -*-
import pygame
from pygame.locals import *
import sys

SCREEN_SIZE = (720, 480)

pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE)
pygame.display.set_caption("Pygame Test")
background = pygame.image.load("Hitagisama.jpg").convert()

while True:
    screen.fill((0, 0, 0))
    screen.blit(background, (0, 0))
    pygame.display.update()

    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        if KEYDOWN == K_ESCAPE:
            sys.exit()

pygameでは,19行でウィンドウの生成と画像の表示を行えます.

# -*- coding: utf-8 -*-
import pygame
from pygame.locals import *
import sys

ウィンドウを生成するのに必要なモジュールは,基本的には pygame のみですが,pygameで定義されている定数を使用するため,pygame.localsモジュールを,アプリケーションを終了するイベントを呼ぶために sysモジュールをインポートしておきます.

pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE)
pygame.display.set_caption("Pygame Test")
background = pygame.image.load("Hitagisama.jpg").convert()

init では名前の通り,読み込まれているすべてのモジュールを初期化します.

次にウィンドウの各設定です.display.set_mode で表示するウィンドウの初期化を行います.フラグを渡すことで,全画面やリサイズ可能と言ったオプションを指定できますが,今回は解像度だけを渡します.

最後に画像の読み込みです.image.loadの引数に画像へのpathを渡すことで読み込む画像の指定を行い,convert()で,ピクセル形式を指定します.ピクセル形式は,画像を表示する部分( surface )が読み込んだ画像のピクセルの色をどのように記録するかを設定するものです,読み込んだ画像の中身に手を加えない場合,はじめに一度設定しておくと何度もconvertが呼ばれる様な無駄な処理を省けます.

while True:
    screen.fill((0, 0, 0))
    screen.blit(background, (0, 0))
    pygame.display.update()

    for event in pygame.event.get():
        if event.type == QUIT:
            sys.exit()
        if KEYDOWN == K_ESCAPE:
            sys.exit()

fill では,描画部分の色を指定します.ウィンドウの設定同様に,他に引数を渡すことで特定部位の色指定やアルファブレンディングなどのオプションを指定することもできますが,今回はウィンドウの背景色だけを指定します.

blitは読み込んだ画像を実際に表示するために,surfaceにビットマップ転送を行います.要するに読み込んだ画像のピクセル色を格納した配列を描画部分にコピーする処理です.これを呼ぶことで,実際にウィンドウに画像を表示します.

display.updateは,画面の更新です.デフォルト引数でNoneが渡されていますが,rectという句形データを渡すことで部分的な更新を指示できるので,画面全体を更新する無駄を省くことができます.

最後にevent.get() でイベントキューからイベントの取得を行います.キーイベントやマウスイベントなどを,定義されている定数を用いて取得します,