【Pygame】キーイベントでキャラクター移動(長押し対応版)

この記事では、Pygameのキーイベント処理を用いて、矢印キー(長押し)よりキャラクター画像を動かす方法とソースコードを解説します。

矢印キー(長押し)

Python用ゲームモジュール「Pygame」のキーイベント処理機能「pygame.event.get()」を用いて、矢印キー長押しでキャラクター画像を動かしてみました。

処理手順
「pygame」モジュールをインポートする。
画面のサイズを設定する。
円の中心座標を画面の中心に設定する。
Pygameを初期化する。[pygame.init]
画面(ウィンドウ)を生成する。[pygame.display.set_mode]
キャラクター画像を配置する。
キャラクター画像操作するためのイベント処理をする。矢印キーが押されたらその方向にキャラクター画像の中心座標を+5移動する。
画面を更新する。
更新時間の間隔を設定する。
画面の背景色を黒に設定する。
キャラクター画像を描画する。
イベント処理をする。画面の閉じるボタン、もしくはEscキーが押されたら終了する。
6-11の処理を繰り返す。

ソースコード

サンプルプログラムのソースコードです。

# -*- coding: utf-8 -*-
import pygame
from pygame.locals import *
import sys

def main():
    (w,h) = (400,400)   # 画面サイズ
    (x,y) = (w/2, h/2)
    pygame.init()       # pygame初期化
    pygame.display.set_mode((w, h), 0, 32)  # 画面設定
    screen = pygame.display.get_surface()
    im = pygame.image.load("renge.png").convert_alpha()
    rect = im.get_rect()
    rect.center = (w/2, h/2)

    while (1):
        # キーイベント処理(キャラクタ画像の移動)
        pressed_key = pygame.key.get_pressed()
        if pressed_key[K_LEFT]:
            rect.move_ip(-1, 0)
        if pressed_key[K_RIGHT]:
            rect.move_ip(1, 0)
        if pressed_key[K_UP]:
            rect.move_ip(0, -1)
        if pressed_key[K_DOWN]:
            rect.move_ip(0, 1)

        pygame.display.update()     # 画面更新
        pygame.time.wait(30)        # 更新時間間隔
        screen.fill((0, 20, 0, 0))  # 画面の背景色
        screen.blit(im, rect)       # 画像の描画
        # 終了用のイベント処理
        for event in pygame.event.get():
            if event.type == QUIT:          # 閉じるボタンが押されたとき
                pygame.quit()
                sys.exit()
            if event.type == KEYDOWN:       # キーを押したとき
                if event.key == K_ESCAPE:   # Escキーが押されたとき
                    pygame.quit()
                    sys.exit()

if __name__ == "__main__":
    main()

矢印キーでキャラクターを動かすことができました。

関連記事
1 Pygameでゲームプログラミング
2 Python入門 基本文法
関連記事