Pythonで2Dゲームを作る(1) Pygameライブラリの導入
2018/02/25
Pythonには「Pygame」という2次元ゲーム開発向けのライブラリが存在します。グラフィックスやサウンドを制御できます。
今回はPygameライブラリの導入から、2次元グラフィクスに関する簡単なプログラミングまでを紹介します。
Pygameライブラリのインストール
Python3にPygameをインストールする場合は以下のようにpipコマンドを使います。
pip install pygame
[ad#top-1]
基本プログラム
以下がPygameに関する最小のプログラムです。
import pygame BLACK = (0, 0, 0) pygame.init() screen = pygame.display.set_mode((640, 480)) myclock = pygame.time.Clock() screen.fill(BLACK) flag=0 while flag==0: for event in pygame.event.get(): if event.type==pygame.QUIT: flag=1 myclock.tick(60) pygame.quit()
これを実行すると何の変哲もない黒い画面が現れます。背景色を黒に設定したステージとなります。この上に2Dグラフィックスを描画していくわけです。
終盤の以下の行ですが、flag==0
のうちはループし続けます。これは「イベント待ち」となっていて、ウィンドウの終了ボタン(右上の☓ボタン)が押されたら、flag=1
となり終了となります。これがないと実行した瞬間ウィンドウも閉じてしまいます。myclock.tick(60)
は時間的なインターバルを置くためにあります。
flag=0 while flag==0: for event in pygame.event.get(): if event.type==pygame.QUIT: flag=1 myclock.tick(60)
簡単な図形を描いてみる
赤い四角を描画してみます。下記は先ほどのソースコードに「#赤い四角を描画」と書かれている下3行が追加したところです。(厳密に言うとそれよりも前にRED変数を設定しているけど..)
import pygame BLACK = (0, 0, 0) RED = (255, 0, 0) pygame.init() screen = pygame.display.set_mode((640, 480)) myclock = pygame.time.Clock() screen.fill(BLACK) #赤い四角を描画 rect = (200, 100, 100, 100) pygame.draw.rect(screen, RED, rect) pygame.display.flip() flag=0 while flag==0: for event in pygame.event.get(): if event.type==pygame.QUIT: flag=1 myclock.tick(60) pygame.quit()
これを実行すると以下の通り、赤い四角が現れました。
四角以外にも、丸、三角、ラインを以下のように描くことができます。
ソースコードは以下のとおりです。
import pygame BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) WHITE = (255, 255, 255) pygame.init() screen = pygame.display.set_mode((640, 480)) myclock = pygame.time.Clock() screen.fill(BLACK) #赤い四角を描画 rect = (200, 100, 100, 100) pygame.draw.rect(screen, RED, rect) #青い丸を描画 cirpos = (400, 150) pygame.draw.circle(screen, GREEN, cirpos, 50) #青い三角形を描画 triangle = [(200, 350), (250, 250), (300, 350)] pygame.draw.polygon(screen, BLUE, triangle) #白いラインを描画 st=(350, 250) en=(450,350) pygame.draw.line(screen, WHITE, st, en) pygame.display.flip() flag=0 while flag==0: for event in pygame.event.get(): if event.type==pygame.QUIT: flag=1 myclock.tick(60) pygame.quit()
【次回】 図形をキー操作で動作させます。
[ad#ad-1]
スポンサーリンク