【Python】第9章第7回:ゲーム開発(Pygame)

本記事では、Pythonを用いたゲーム開発の基礎を学びます。Pygameライブラリを使って簡単なゲームを作成する方法を解説し、初心者でも取り組みやすい構成で進めます。
0. 記事の概要
この記事を読むメリット
- ゲーム開発の基礎を理解:ゲームの構造や基本概念が学べます。
- Pygameの使い方を習得:Pythonを使ったシンプルなゲーム作成が可能になります。
- 実践スキルの向上:オリジナルのゲーム開発に必要な知識を習得できます。
この記事で学べること
- ゲームの基本構造とPygameの役割
- Pygameを使ったゲーム開発の流れ
- 簡単なゲームの実装例
1. ゲーム開発の基本とは?

1.1 ゲームの基本構造
- ゲーム開発の基礎を理解:ゲームの構造や基本概念が学べます。
- Pygameの使い方を習得:Pythonを使ったシンプルなゲーム作成が可能になります。
- 実践スキルの向上:オリジナルのゲーム開発に必要な知識を習得できます。
この記事で学べること
- ゲームの基本構造とPygameの役割
- Pygameを使ったゲーム開発の流れ
- 簡単なゲームの実装例
1. ゲーム開発の基本とは?

1.1 ゲームの基本構造

1.1 ゲームの基本構造
ゲームは以下のような基本構造を持っています。
- 初期化: ゲームの設定やリソースの読み込みを行う。
- ゲームループ: プレイヤーの操作や画面の更新を繰り返す。
- 終了処理: ゲームのリソースを解放して終了する。
1.2 Pygameとは?
PygameはPythonでゲームを作成するためのライブラリです。以下のような特徴があります。
- 簡単なコードでグラフィックスや音声を扱える。
- 初心者でも扱いやすい設計。
- クロスプラットフォームで動作可能。
2. Pygameの基本的な使い方

2.1 Pygameのインストール
# Pygameのインストール
pip install pygame
2.2 コード例:ウィンドウの作成
# Pygameでウィンドウを作成
import pygame
# 初期化
pygame.init()
# ウィンドウの設定
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Pygameウィンドウ")
# メインループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 終了処理
pygame.quit()
動作解説
- pygame.init: Pygameライブラリを初期化します。
- set_mode: ウィンドウのサイズを指定して作成します。
- pygame.QUIT: ウィンドウを閉じるイベントを処理します。
3. 実践例:シンプルなゲームの作成
3.1 サンプルコード
# Pygameで簡単なゲームを作成
import pygame
# 初期化
pygame.init()
# ウィンドウの設定
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("ボールを動かすゲーム")
# ボールの初期位置
ball_x, ball_y = 400, 300
ball_speed_x, ball_speed_y = 5, 5
# 色の設定
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# メインループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 画面を白でクリア
screen.fill(WHITE)
# ボールの移動
ball_x += ball_speed_x
ball_y += ball_speed_y
# 画面端で跳ね返る
if ball_x <= 0 or ball_x >= 800:
ball_speed_x *= -1
if ball_y <= 0 or ball_y >= 600:
ball_speed_y *= -1
# ボールを描画
pygame.draw.circle(screen, RED, (ball_x, ball_y), 20)
# 画面を更新
pygame.display.flip()
# 終了処理
pygame.quit()
動作解説
- fill: 画面を背景色で塗りつぶします。
- draw.circle: 円を描画してボールを表現します。
- flip: 画面の更新を行います。
4. 練習問題


# Pygameのインストール
pip install pygame
2.2 コード例:ウィンドウの作成
# Pygameでウィンドウを作成
import pygame
# 初期化
pygame.init()
# ウィンドウの設定
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Pygameウィンドウ")
# メインループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 終了処理
pygame.quit()
動作解説
# Pygameでウィンドウを作成
import pygame
# 初期化
pygame.init()
# ウィンドウの設定
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Pygameウィンドウ")
# メインループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 終了処理
pygame.quit()
- pygame.init: Pygameライブラリを初期化します。
- set_mode: ウィンドウのサイズを指定して作成します。
- pygame.QUIT: ウィンドウを閉じるイベントを処理します。
3. 実践例:シンプルなゲームの作成
3.1 サンプルコード
# Pygameで簡単なゲームを作成
import pygame
# 初期化
pygame.init()
# ウィンドウの設定
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("ボールを動かすゲーム")
# ボールの初期位置
ball_x, ball_y = 400, 300
ball_speed_x, ball_speed_y = 5, 5
# 色の設定
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# メインループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 画面を白でクリア
screen.fill(WHITE)
# ボールの移動
ball_x += ball_speed_x
ball_y += ball_speed_y
# 画面端で跳ね返る
if ball_x <= 0 or ball_x >= 800:
ball_speed_x *= -1
if ball_y <= 0 or ball_y >= 600:
ball_speed_y *= -1
# ボールを描画
pygame.draw.circle(screen, RED, (ball_x, ball_y), 20)
# 画面を更新
pygame.display.flip()
# 終了処理
pygame.quit()
動作解説
- fill: 画面を背景色で塗りつぶします。
- draw.circle: 円を描画してボールを表現します。
- flip: 画面の更新を行います。
4. 練習問題

# Pygameで簡単なゲームを作成
import pygame
# 初期化
pygame.init()
# ウィンドウの設定
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("ボールを動かすゲーム")
# ボールの初期位置
ball_x, ball_y = 400, 300
ball_speed_x, ball_speed_y = 5, 5
# 色の設定
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# メインループ
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 画面を白でクリア
screen.fill(WHITE)
# ボールの移動
ball_x += ball_speed_x
ball_y += ball_speed_y
# 画面端で跳ね返る
if ball_x <= 0 or ball_x >= 800:
ball_speed_x *= -1
if ball_y <= 0 or ball_y >= 600:
ball_speed_y *= -1
# ボールを描画
pygame.draw.circle(screen, RED, (ball_x, ball_y), 20)
# 画面を更新
pygame.display.flip()
# 終了処理
pygame.quit()
動作解説

以下の課題に挑戦してみましょう。
- ボールのサイズや速度を変更してください。
- 画面にもう一つオブジェクトを追加し、衝突を検知するプログラムを作成してください。
5. 練習問題の解答と解説
問1の解答例
# ボールの速度を変更する例
ball_speed_x, ball_speed_y = 10, 10 # 高速化
問2の解答例
# 衝突を検知するコード
if abs(ball_x - object_x) < 20 and abs(ball_y - object_y) < 20:
print("衝突しました!")
6. まとめ
# ボールの速度を変更する例
ball_speed_x, ball_speed_y = 10, 10 # 高速化
問2の解答例
# 衝突を検知するコード
if abs(ball_x - object_x) < 20 and abs(ball_y - object_y) < 20:
print("衝突しました!")
6. まとめ
# 衝突を検知するコード
if abs(ball_x - object_x) < 20 and abs(ball_y - object_y) < 20:
print("衝突しました!")
本記事では、Pygameを使用してPythonでゲームを作成する基本を学びました。ゲームの基本構造を理解し、自分だけのオリジナルゲームを開発してみましょう。