【Pygame】矢印キー(長押し)の使い方

この記事では、Python言語とPygameのキーイベント処理を用いて、矢印キー長押しにより物体を動かす方法とソースコードを解説します。

スポンサーリンク

矢印キー(長押し)

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

スポンサーリンク

処理手順

プログラムの処理の流れは下記の通りです。

①「pygame」モジュールをインポートする。
②画面のサイズを設定する。
③円の中心座標を画面の中心に設定する。
④Pygameを初期化する。[pygame.init]
⑤画面(ウィンドウ)を生成する。[pygame.display.set_mode]
⑥イベント処理をする。
・矢印キーが押されたらその方向に円の中心座標を+1移動する。
⑦画面を更新する。
⑧更新時間の間隔を設定する。
⑨画面の背景色を黒に設定する。
⑩円の中心座標が画面の範囲外にある場合は、画面端の座標に設定する。
⑪円を描画する。
⑫イベント処理をする。
・画面の閉じるボタンが押されたら終了する。
⑬6-12の処理を繰り返す。

スポンサーリンク

ソースコード

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

# -*- 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()

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

        pygame.display.update()     # 画面更新
        pygame.time.wait(30)        # 更新時間間隔
        screen.fill((0, 20, 0, 0))  # 画面の背景色
        # 円を描画
        pygame.draw.circle(screen, (0, 200, 0), (int(x), int(y)), 5)
        # イベント処理
        for event in pygame.event.get():
            # 画面の閉じるボタンを押したとき
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            # キーを押したとき
            if event.type == KEYDOWN:
                # ESCキーなら終了
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()


if __name__ == "__main__":
    main()
スポンサーリンク

実行結果

サンプルプログラムの実行結果です。


矢印キーで円を動かすことができました。

スポンサーリンク

関連記事

Pygameの使い方・サンプルゲームまとめ
Pythonモジュール「Pygame」で2Dゲームを簡単に制作する方法を解説します。
404 NOT FOUND | 西住工房(改)
Python
スポンサーリンク

コメント

  1. 匿名 より:

    pygame 1.9.4
    pygame.draw.circle(screen, (0, 200, 0), (x, y), 5)
    TypeError: integer argument expected, got float
    とエラー
    x,yをintにしてやって通りました・・・(´・ω・`)

    • 管理人 より:

      コメントありがとうございます。
      Python3では整数型でないとエラーが出るようですね。
      修正いたしました。