Pygameで簡単にキャラクターを動かそう!Python初心者向け実践ガイド

ゲーム

Pythonでゲームを作成するためのライブラリとして広く使われているのが「Pygame」です。Pygameを使えば、簡単な2Dゲームやアニメーションを作成でき、ゲームプログラミング初心者でもキャラクターの操作を実装できます。

今回は、キャラクター画像img.pngを読み込み、キーボード入力で自由に移動させる方法をご紹介します。

キャラクターの基本設定

サンプルコード

import pygame
import sys

# Pygameの初期化
pygame.init()

# 画面サイズ
SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Pygameでキャラクターを動かす")

# キャラクターの読み込みとサイズ調整
character_image = pygame.image.load("img.png")
character_image = pygame.transform.scale(character_image, (100, 100))  # 適切なサイズに変更

# キャラクターの初期位置
# 画面の中央
character_x, character_y = SCREEN_WIDTH / 2 - 50, SCREEN_HEIGHT / 2 - 50

# 色の設定
background_color = (255, 255, 255)  # 白色

# ゲームループ
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # 背景色の設定
    screen.fill(background_color)

    # キャラクターの描画
    screen.blit(character_image, (character_x, character_y))

    pygame.display.flip()

キャラクターの移動方法

次に、キャラクターをキーボードで動かせるようにします。具体的には、矢印キーでキャラクターの座標を更新し、画面上で移動させます。

キーボード入力を取得

ゆーや
ゆーや

キーボード入力の取得方法は以下の記事にまとめてあります!

よかったらご覧ください!

キー入力に応じてキャラクターの位置を更新

サンプルコード

import pygame
import sys

# Pygameの初期化
pygame.init()

# 画面サイズ
SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Pygameでキャラクターを動かす")

# キャラクターの読み込みとサイズ調整
character_image = pygame.image.load("img.png")
character_image = pygame.transform.scale(character_image, (100, 100))  # 適切なサイズに変更

# キャラクターの初期位置
# 画面の中央
character_x, character_y = SCREEN_WIDTH / 2 - 50, SCREEN_HEIGHT / 2 - 50

# キャラクターの移動速度
character_speed = 0.5

# 色の設定
background_color = (255, 255, 255)  # 白色

# ゲームループ
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # キーの状態を取得
    keys = pygame.key.get_pressed()

    # 矢印キーでの移動
    if keys[pygame.K_LEFT]:
        character_x -= character_speed
    if keys[pygame.K_RIGHT]:
        character_x += character_speed
    if keys[pygame.K_UP]:
        character_y -= character_speed
    if keys[pygame.K_DOWN]:
        character_y += character_speed

    # 画面外に出ないように制御
    character_x = max(0, min(character_x, SCREEN_WIDTH - character_image.get_width()))
    character_y = max(0, min(character_y, SCREEN_HEIGHT - character_image.get_height()))

    # 背景色の設定とキャラクターの描画
    screen.fill(background_color)
    screen.blit(character_image, (character_x, character_y))
    pygame.display.flip()
ゆーや
ゆーや

これで自由に動けるね!スピードを変えていじってみよう!

コードの解説 

キーボード入力の検出

pygame.key.get_pressed()で現在押されているキーの状態を取得できます。これを用いると、キーが押されている間だけキャラクターが移動し続けるため、自然な動きになります。

キャラクターの移動制御

矢印キーの入力に合わせてキャラクターの座標を調整し、screen.blit()でその位置に描画します。キー入力があれば毎フレームで位置を更新し続け、なめらかな動きが実現します。

画面外への移動制限

max()やmin()関数を用いることで、キャラクターが画面外に移動しないように制御します。画面端でキャラクターが止まるので、ゲームプレイのストレスも軽減されます。

さらに動きを豊かにする工夫

ダッシュ機能の追加

シフトキーを押しながら移動するとスピードが増すように設定できます。

if keys[pygame.K_LSHIFT] or keys[pygame.K_RSHIFT]:  # シフトキーが押されている場合
    character_speed = 10
else:
    character_speed = 5

重力の追加

例えば横移動に加え、上下移動に重力をかけることでジャンプのような動きを再現できます。

ゆーや
ゆーや

重力の追加については、次の記事を見てね!

※現在、執筆中…

アニメーションの導入

複数の画像を用意し、キャラクターの動きに応じて画像を切り替えることで、歩いているようなアニメーション効果を加えられます。

ゆーや
ゆーや

キャラのアニメーションの導入については、次の記事を見てね!

※現在、執筆中…

まとめ

Pygameを使ったキャラクターの移動方法について解説しました。基本的な移動に加え、様々な工夫を加えることで、キャラクターに命が吹き込まれたような、プレイヤーを楽しませるゲーム体験が作り出せます。Pygameの応用方法は無限大ですので、ぜひ自分なりのアレンジを加えて、オリジナルのゲーム開発を楽しんでみてください。

コメント

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