非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

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]

スポンサーリンク

 - Python