「第4章: ファクトリーパターン - PyGame でグラフィックスを描画してみよう」の巻
前章では我々自身の「ゲーム」開発に取り掛かりました。しかし「何がゲームだ、文字だけじゃん」と思っている方もいるかもしれませんから、ちょっと時間を取って「画面に何かを描画する」方法を見てみたいと思います。
この章ではまず、Python を使用したグラフィックスの基礎を「ちょっとだけ」学びます。利用するのは PyGame パッケージです。同時に factory classes (ファクトリークラス) も作成していきます。
Factory classes は、ある特定のパラメータのセットを受け取り、それを他のクラスのオブジェクトの作成に利用するオブジェクト、を定義します。並行して、こうした factory classes を定義する際のテンプレート (template: 型紙) となる抽象ファクトリークラス (abstract factory classes) も定義しましょう。
仮想環境に入っている状態で以下のコマンドを実行して PyGame パッケージをインストールしましょう:
pip install pygame
さて、PyGame を利用してウィンドウを表示してみます:
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
python graphic_base.py
見えましたか?一瞬でしたが 幅 800 x 高さ 600 のウィンドウが出現したはずです。おめでとうございます!!初めての画面描画に成功です!!でもさすがに一瞬過ぎますね。もうちょっと眺めてみましょう:
from time import sleep
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
sleep(5)
画面が表示されてからこのプログラムが終了するまで5秒間 sleep させてみました。今度はしっかりとウィンドウが確認できましたね。
初めて今回のようにウィンドウを描画したときは、私はもう嬉しくて友達を呼んで見せびらかしたものですが、友達は白けていました。あなたに同じような悲しい思いはさせたくありませんから、友達に見せる前に「何か」表示してみましょう!
from time import sleep
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
pygame.draw.rect(screen, (255, 0, 34), pygame.Rect(42, 15, 400, 320))
pygame.display.flip()
sleep(5)
pygame.draw.rect() 関数は、screen に矩形を描画します。第1引数で描画のターゲットなるウィンドウ、第2引数では描画する矩形の色 (RGB[A])、第3引数で描画する矩形の位置とサイズをそれぞれ指定します: 最初の2つで矩形の左上の座標、3番目で幅、4番目で高さ、となります。
もし pygame.display.flip() 関数を呼び忘れるとスクリーンには何も表示されません。これは、PyGame が画面全体をメモリバッファ上に構築してから画像全体を「実際」のスクリーン上に転写するためです。ですから、スクリーン表示を変更した場合は常に pygame.display.flip() 関数を呼び出す必要があります。
どうぞ色々なカラーで、画面上の色々な場所に、色々な大きさで矩形を描画してみてください。