ウィンドウの作成
GUIのはじめとして, ウィンドウの作成をします.
関数でウィンドウを呼びます.
#Pygameを使う場合に必須のモジュールをインポート import pygame from pygame.locals import * import sys SCREEN_SIZE = (300, 480) # 画面サイズ def main(): # Pygameを初期化.Pygameのモジュールを使う前に実行する必要がある. pygame.init() # SCREEN_SIZEの画面を作成 screen = pygame.display.set_mode(SCREEN_SIZE) # タイトルバーの文字列をセット sysfont = pygame.font.SysFont(None, 40) pygame.display.set_caption("ウィンドウ") hello = sysfont.render(u"Hello,world!",True, (0,0,255)) hello1 = sysfont.render(u"Hello,world!",True, (0,0,205)) hello2 = sysfont.render(u"Hello,world!",True, (0,0,155)) hello3 = sysfont.render(u"Hello,world!",True, (0,0,105)) hello4 = sysfont.render(u"Hello,world!",True, (0,0,55)) hello5 = sysfont.render(u"Hello,world!",True, (0,0,5)) # ゲームループ while True: screen.fill((255,255,255)) screen.blit(hello,(50,20)) screen.blit(hello1,(50,70)) screen.blit(hello2,(50,120)) screen.blit(hello3,(50,170)) screen.blit(hello4,(50,220)) screen.blit(hello5,(50,270)) pygame.display.update() # 画面を更新 # イベント処理 for event in pygame.event.get(): if event.type == QUIT: # 終了イベント sys.exit() if __name__ == "__main__": main()
わかりにくいところをそれぞれ紹介していきます.
pygame.display.set_mode()
これでメイン画面の作成をします. 引数には画面のサイズをタプルで入れてあげます.
pygame.display.set_caption()
という関数で, メイン画面のタイトルバーにキャプションの設定ができます.
次にフォントの設定です.
pygame.font.SysFont()
この関数で設定できます. フォント名にNoneを入れてあげるとデフォルトのフォントを使います.
Font.render()
この関数でテキストのレンダリングをします.
第一引数に表示させたい文字列.
第二引数にアンチエイリアシングを使うかどうかです. Trueにすると文字がなめらかになります.
アンチエイリアシングとは同じ画素数でも文字をなめらかに表示する工夫のことです.
第三引数は文字の色です.
第四引数は背景の色です. 今回のように書いていないと透明になります.
Surface.blit()
によってウィンドウに描写します.
次に, このプログラムの一番重要なところです.
プログラム上のゲームループでくくられている箇所です.
これがないとスクリプトが一瞬で終わってしまいます.
ゲームループは無限ループです.
while文の中で回っています.
while True: screen.fill((255,255,255)) screen.blit(hello,(50,20)) screen.blit(hello1,(50,70)) screen.blit(hello2,(50,120)) screen.blit(hello3,(50,170)) screen.blit(hello4,(50,220)) screen.blit(hello5,(50,270)) pygame.display.update() # 画面を更新 # イベント処理 for event in pygame.event.get(): if event.type == QUIT: # 終了イベント sys.exit()
pygame.display.update()
この関数は画面を更新する関数です. >|python| for event in pygame.event.get(): if event.type == QUIT: # 終了イベント sys.exit()
最期のこの処理で終了イベント(QUIT)がきたときにスクリプトを終了することができます.
QUITはウィンドウの×を押したときに発生します.
これによって無限ループから脱することができます.
ゲームループの流れは一般に以下のとおりです.
while True: ゲームオブジェクトの更新 ゲームオブジェクトのレンダリング(描画) 画面の更新 イベント処理
ゲームオブジェクトの更新で, ゲームのキャラクターの位置の移動を行います.
レンダリングでメモリ上のSurface(メインウィンドウのこと.今回はscreen)にゲームオブジェクトを配置します.(まだ私自身完全に理解していないので, 今後更新します)
最後にウィンドウに表示させます.
2番目の過程のバックバッファをはさむことで, 動作をなめらかにします.