福岡人データサイエンティストの部屋

データサイエンスを極めるため、日々の学習を綴っています。

【PyGame】ゲーム作成ライブラリ使い始めます【Python】



こんにちは!こーたろーです。


最近、目指す方向が右往左往しているのですが、あくまでデータサイエンスを極めるということで、いろいろと試行錯誤していきます。


右往左往を試行錯誤と言い換えるのはいいかもしれませんね。


学生が勉強するためにも、PyGameを使えるようになっておこう!と思い、最近はじめました。


私が学習する過程を学生にも見てもらえれば、学習の手順なんかも参考になるかと思います。


それでは早速まいりましょう!


ライブラリのインポート



今回は、PyGameの基礎ということで、画面の表示と画面クローズのみを行っていきます。


必要なライブラリとしては、sysとpygameのみです。


使いやすいように、QUIT、KYEDOWN、K_ESCAPEはpygame.localから読み込んでおきます。

import sys
import pygame
from pygame.locals import QUIT, KEYDOWN, K_ESCAPE


Pygameの初期化とディスプレイの設定




pygame.init()
pygame.display.set_mode((800,600))
surface = pygame.display.get_surface()
surface.fill((50, 50, 50))



PyGameを起動するときの、pygameに関する全てのモジュールを初期化しておきます。


pygame.display.set_modeでは、ゲームディスプレイの画面サイズを指定します。(今回は、4:3で設定しました)


ディスプレイの中に、ゲーム画面を今後設定していくのですが、要素を組み込む前の背景をpygame.display.get_surface()でインスタンス化しておき、fillメソッドで背景の色をRGBの0から255の値で設定します。

メインループの設定



画面表示を連続で行い、その間に指定した操作が入ると、画面を閉じるようにメインループを作成します。

while True:
    pygame.display.update()
        
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
            
        if event.type == KEYDOWN:
            
            if event.key == K_ESCAPE:
                pygame.quit()
                sys.exit()
    pygame.time.delay(100)

pygame.display.update() で、連続的に画面表示を更新していきます。


今回は、背景が1色のため変化はありません。


for文の中では画面操作やキー操作といったイベントが実行されたときの処理を記述していきます。


event.type ==QUIT は、ディスプレイ上の終了ボタンを押したときの条件になります。


このとき、pygeme及びsysは終了するようにしています。


その他に、event.type==KEYDOWNは、キーを押下した時の処理になります。


その中でも、ESCAPEキーの入力があったときだけ、終了するようにしています。


最後に、pygame.time.delayですが、()内の時間[ミリ秒]だけ、プログラムを停止する処理になります。


これは、while文の処理の繰り返しが、delayを待たずにくり返し処理をしてしまうと、リソースをかなり使ってしまうため、入れておく必要があります。


このプログラムを実行すると、





このような画面がでてきて、Escキーまたは終了の✖ボタンでディスプレイを閉じてくれます。


実際に作るときは、pyファイルにして、全体をmain()関数にしておき、


次のプログラムを末尾に加えましょう。


その上で、ターミナルから [python ファイル名.py] のような形で実行する方が一般的かもしれません。


もちろんJyupiterNotebookでも実行できますが、再実行する際は一度データをクリアする必要があるので、どちらがいいかは個人の判断に任せます。

if __name__ == "__main__":
    main()



少しずつ楽しくなってきました。


ではでは。


Pythonでつくる ゲーム開発 入門講座 実践編