Pygameで簡単にできるアニメーションの作り方:初心者向けチュートリアル

ゲーム

PygameはPythonを使ってゲームを開発するためのライブラリですが、実はアニメーションの作成にも非常に便利です。Pythonのシンプルなコードで動きを実現できるため、初心者でもアニメーションの基本を簡単に学べます。

この記事では、Pygameを使って基本的なアニメーションを作る方法を解説していきます。Pygameのインストールから、実際のコード例、アニメーションの仕組みまで網羅的に紹介しますので、ぜひ最後までお付き合いください!

Pygameのインストールと基本操作

ゆーや
ゆーや

Pygameのインストールについてはこちらから!

Pygameの基本的なコードについて分からなかったら以下の記事に戻ってみてね!

アニメーションループの作成

サンプルコード

import pygame
import sys

# 初期化
pygame.init()

# 画面サイズ設定
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("完全独学Python-アニメーションの基本")

# 色の定義
WHITE = (255, 255, 255)

# ボールの初期位置と速度
ball_x, ball_y = 50, 50
ball_radius = 20
ball_speed_x = 5
ball_speed_y = 5

# フレームレート設定
clock = pygame.time.Clock()

while True:
    # イベント処理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # 画面を白で塗りつぶす
    screen.fill(WHITE)

    # ボールの位置を更新
    ball_x += ball_speed_x
    ball_y += ball_speed_y

    # 壁に当たったときの反転
    if ball_x - ball_radius < 0 or ball_x + ball_radius > screen_width:
        ball_speed_x *= -1
    if ball_y - ball_radius < 0 or ball_y + ball_radius > screen_height:
        ball_speed_y *= -1

    # ボールを描画
    pygame.draw.circle(screen, (0, 0, 255), (ball_x, ball_y), ball_radius)

    # 画面の更新
    pygame.display.flip()

    # フレームレートを設定
    clock.tick(60)
ゆーや
ゆーや

このコードでは、ボールが画面の端に到達すると反転して跳ね返るようにしています!壁にぶつかるときの処理は、条件文でボールの位置をチェックし、速度の方向を反転させることで実現しています!

コードの解説

Pygameの初期化

import pygame
import sys

# 初期化
pygame.init()
ゆーや
ゆーや

ここでimport pygameによりPygameライブラリが読み込まれ、sysはウィンドウを閉じるときに使います。

画面サイズの設定

screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("完全独学Python-アニメーションの基本")
ゆーや
ゆーや

アニメーションを表示する画面サイズを設定します。画面は800×600ピクセルに設定しています!pygame.display.set_caption() はウィンドウのタイトルを指定しています!

背景色とオブジェクトの初期設定

# 色の定義
WHITE = (255, 255, 255)

# ボールの初期位置と速度
ball_x, ball_y = 50, 50
ball_radius = 20
ball_speed_x = 5
ball_speed_y = 5
ゆーや
ゆーや

ボールの位置(ball_xとball_y)、半径(ball_radius)、速度(ball_speed_xとball_speed_y)を指定します。速度にプラスの値を設定しているため、初期状態では右下方向に移動します!

フレームレートの設定

# フレームレート設定
clock = pygame.time.Clock()
ゆーや
ゆーや

pygame.time.Clock()を使用して、アニメーションのフレームレートを調整します。フレームレートとは、1秒あたりに何回画面を更新するかを指定するもので、滑らかなアニメーションに欠かせません。

メインループ

while True:
    # イベント処理
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
ゆーや
ゆーや

このループでは、ウィンドウの「×」ボタンが押された時にpygame.quit()とsys.exit()を使ってアプリケーションを終了します。

画面の描画とボールの位置更新

    # 画面を白で塗りつぶす
    screen.fill(WHITE)

    # ボールの位置を更新
    ball_x += ball_speed_x
    ball_y += ball_speed_y
ゆーや
ゆーや

ball_xとball_yにball_speed_xとball_speed_yをそれぞれ加えることでボールを移動させます。

壁での反転処理

    # 壁に当たったときの反転
    if ball_x - ball_radius < 0 or ball_x + ball_radius > screen_width:
        ball_speed_x *= -1
    if ball_y - ball_radius < 0 or ball_y + ball_radius > screen_height:
        ball_speed_y *= -1
ゆーや
ゆーや

ボールの位置と半径が画面の端を超えた場合に、ball_speed_xまたはball_speed_yの符号を反転させて方向を逆にします。これにより、ボールが壁にぶつかると跳ね返る動きを再現できます。

ボールの描画と画面更新

    # ボールを描画
    pygame.draw.circle(screen, (0, 0, 255), (ball_x, ball_y), ball_radius)

    # 画面の更新
    pygame.display.flip()
ゆーや
ゆーや

pygame.draw.circle()でボールを描画。(0, 0, 255)はボールの色(青色)を指定しています!
pygame.display.flip()で画面全体を更新します。これを行うことで、最新の描画内容が反映されます!

フレームレートの調整

    # フレームレートを設定
    clock.tick(60)
ゆーや
ゆーや

clock.tick(60)でフレームレートを60に設定。高すぎると動きが速すぎるため、適切な値に調整します。

まとめ

Pygameを使ったアニメーションの作成は非常に簡単で、基本的なコードの仕組みを理解するだけでさまざまな動きを実現できます。今回のサンプルコードを元に、動きのパターンやエフェクトを増やしていけば、さらに複雑なアニメーションも可能になります。Python初心者でもPygameのアニメーションをマスターすれば、ゲーム開発の第一歩が踏み出せるでしょう!

コメント

タイトルとURLをコピーしました