Pygameで画面設定(サイズ、タイトル、背景色、文字、フルスクリーン)と終了のイベント処理の定義を行い、表示する方法をソースコード付きで詳しく解説します。
画面の基本設定と終了のイベント処理
Pythonライブラリ「Pygame」には画面(ウィンドウ)を作成する機能があります。
また、画面の色々な設定機能が備わっています。今回はこれを利用して600*500の画面を表示し、基本的な設定方法を見ていきます。
動画解説版
本ページの内容は以下動画でも解説しています。
サンプルコード
このプログラムは、画面を開いて真っ黒に塗りつぶして表示し続け、「画面を閉じる」ボタンが押されるとプログラムが終了します。
コード解説
上記コードの各部分について解説します。
①sysとPygame本体をインポートします。
sysはイベント処理でプログラムを終了sys.exit()
させるためにインポートします。
import sys import pygame
②「pygame.locals」から全ての定数をインポートします。
これにより、「QUIT(終了ボタンが押された)」などの定数を直接使用できます。
from pygame.locals import *
③画面サイズ(横600px、縦500px)をタプルで定義します。
SCREEN_SIZE = (600, 500)
③ メイン関数を定義します。
pygame.init()
でPygameを初期化します。
pygame.display.set_mode(SCREEN_SIZE)
でタプルで指定したサイズの画面を作成します。
pygame.display.set_caption("Test")
で画面のタイトルを「Test」に設定します。
公式ドキュメント:https://www.pygame.org/docs/ref/display.html
def main():
pygame.init()
screen = pygame.display.set_mode(SCREEN_SIZE)
pygame.display.set_caption("Test")
④メインループを定義します。
while True:
で無限ループを開始します。無限ループは、画面を表示させ続けます。
screen.fill((0, 0, 0))
で画面を黒色(RGB値がRed=0,Green=0,Blue=0)に塗りつぶします。
pygame.display.update()
で画面を更新します。
while True:
screen.fill((0, 0, 0))
pygame.display.update()
④イベント処理を定義します。
pygame.event.get()
でイベントを取得し、ループで処理します。
if event.type == QUIT:
で画面ウの閉じるボタンが押されたかをチェックします。
pygame.quit()
でPygameを終了し、sys.exit()
でプログラムを終了します。
これで、閉じるボタンが押されたときに、プログラムが終了するようになります。
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
⑤ プログラムのエントリーポイントを定義します。
if __name__ == "__main__":
は、このスクリプトが直接実行された場合にmain()
関数を呼び出します。
if __name__ == "__main__":
main()
タイトルの変更
pygameでは、「pygame.display.set_caption」を使うことで画面のタイトルを変更できます。
今回はこれを利用してタイトルバーに「GAME」と書かれた画面を表示します。
サンプルコード
コード解説
以下で画面タイトルを設定します。
pygame.display.set_caption("ゲームタイトル")
公式ドキュメント:https://www.pygame.org/docs/ref/display.html
背景色の変更
Pygameでは、「screen.fill」を使うことで画面の背景色を変更できます。
今回はこれを利用して緑色の画面を表示します。
サンプルコード
コード解説
screen.fill((0, 255, 0))
でメソッド画面を緑色(RGB値がRed=0,Green=255,Blue=0)に塗りつぶします。
色はタプル(0, 255, 0)でRGBの値を指定します。
文字列(テキスト)の表示
Pygameではfont.render()とscreen.blit()メソッドで、以下のように画面に任意の文字列を描画できます。
サンプルコード
コード解説
text = font.render("TEST", True, (255, 255, 255))
上記メソッドは、指定した文字列を描画するためのSurfaceオブジェクトを作成します。変数text
に「TEST」という文字列が描画されたSurfaceオブジェクトが格納されます。
"TEST"
:描画する文字列です。True
:アンチエイリアス(文字のギザギザを滑らかにする)を有効にするかどうかを指定します。ここでは有効にしています。(255, 255, 255)
:文字の色をRGB形式で指定しています。この場合、白色です。
screen.blit(text, [20, 100])
上記メソッドは、指定したSurfaceオブジェクトを画面に描画します。
text
:先ほど作成した文字列が描画されたSurfaceオブジェクトです。[20, 100]
:描画する位置を指定します。ここでは、画面の左上から20ピクセル右、100ピクセル下の位置に描画します。
結果として、「TEST」という文字列が画面の指定位置に表示されます。
Surfaceオブジェクト
Surfaceオブジェクトは、ゲーム画面や画像、テキストなどのグラフィック要素を表現するためのオブジェクトです。
Surfaceオブジェクトの主な役割とメソッドを紹介します。
【主な役割】
1. ゲーム画面の表示: 主なゲーム画面を表現するSurfaceオブジェクトを作成し、その上に他のグラフィック要素を描画します。
2. 画像の読み込みと表示: 画像ファイルをSurfaceオブジェクトとして読み込み、ゲーム画面上に表示できます。
3. テキストの描画: フォントを指定してテキストをSurfaceオブジェクト上に描画します。
4. グラフィックの操作: Surfaceオブジェクトに対して、回転、拡大縮小、反転などの操作ができます。
5. 衝突判定: Surfaceオブジェクト同士の衝突を検出できます。
【基本的なメソッド】
– get_rect(): Surfaceオブジェクトの矩形を取得します。
– blit(): 他のSurfaceオブジェクトを現在のSurfaceオブジェクトに描画します。
– fill(): Surfaceオブジェクトを指定した色で塗りつぶします。
– get_at(): Surfaceオブジェクトの指定したピクセルの色を取得します。
– convert(): Surfaceオブジェクトのピクセルフォーマットを変換します.
フルスクリーン表示
Pygameで画面をフルスクリーンにするには、pygame.display.set_modeでメイン画面を設定する際に、「FULLSCREEN」というオプションを指定します。
サンプルコード
コード解説
pygame.display.set_mode(SCREEN_SIZE, FULLSCREEN)
上記で、フルスクリーン表示を指定しています。
# キーイベント(何かキーが押されたときに発生するイベント処理)
if event.type == KEYDOWN:
# ESCキーが押されたら終了
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
フルスクリーン表示すると、「終了ボタン」が表示されなくなるため、上記でEscキーを押して画面を閉じる処理も追加しています。
「if event.type == KEYDOWN:」でevent.type
がKEYDOWN
であるかを確認しています。KEYDOWN
は、キーボードのキーが押されたときに発生するイベントです。
「if event.key == K_ESCAPE:」で押されたキーがK_ESCAPE
(ESCキー)であるかを確認しています。
なお、K_ESCAPE
はPygameで定義されている定数で、ESCキーを表します。
関連ページ
Pygameの使い方については以下ページで解説しています。
Python全般については以下ページで解説しています。
コメント