1 イベントとキュー
Pygameでは、ユーザーがゲーム上で行った操作を「イベント」と呼びます。キーボードのキーの押下は、マウスのクリックやゲームパッドの入力と同様、イベントのタイプの 1 つです。これらのイベントは、Pygame サブモジュールのローカルで定義されます。ユーザーがキーボード、マウス、またはゲームパッドを使用してゲームを操作すると、これらのイベントがキューに入れられます。
2 キーボードのキーを取得する基本原理
Pygameにおけるキーストローク取得の基本原理は、これらのイベントをキューから取り出すことですが、キーボードイベントであればユーザーがどのキーを押したかを判断し続け、キーごとに異なる処理を行います。
3 コードの実装
3.1 モジュールのインポート
Pygame モジュールと Pygame モジュールの下の locals サブモジュールをインポートする必要があります。コードは次のとおりです。
import pygame
from pygame.locals import *
3.2 キューからイベントを取得する
キューからイベントを取得するコードは次のとおりです。
while True:
for event in pygame.event.get():
このうち、while True ステートメントは、ゲームの実行中にユーザーが生成したイベントを継続的に取得できることを意味し、pygame.event.get() 関数の機能は、キューからすべてのイベントを取り出して保存することです。それらを変数イベントに含めます。
3.3 キーボードイベントかどうかを判断する
whileループ内で取得したイベントイベントを判定するコードは以下の通りです。
if event.type == KEYUP:
このうち、event.typeはイベントの種類を示し、KEYUPはキーボードのキーが押されたことを示すKEYUPがpygame.localsに定義されています。
3.4 キーの違いによる処理の違い
キーボードのキーイベントであると判断された後、次にユーザーがキーボードのどのキーを押したかを判断し、キーに応じて異なる処理を実行します。実現したい機能は、ユーザーが数字 1 キーを押すと数字 1 が画面に表示され、ユーザーが数字 2 キーを押すと数字 2 が表示されるということです。コードは次のようになります。
if event.key == pygame.K_1:
number = '1'
elif event.key == pygame.K_2:
number = '2'
elif event.key == pygame.K_3:
number = '3'
elif event.key == pygame.K_4:
number = '4'
このうち、event.keyはキーに対応する値を表し、pygame.K_1〜pygame_K_4はそれぞれ1番キー〜4番キーに対応する値を表します。変数番号は表示するものです。
3.4 画面と表示内容を作成する
「Pygame 表示テキスト」を参照してください。
4 コードを完成させます
Pygame でキーボード入力を取得する完全なコードは次のようになります。
import pygame
from pygame.locals import *
import sys
pygame.init()
screen = pygame.display.set_mode((600,500))
font = pygame.font.Font(None, 100)
number = '0'
while True:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == KEYUP:
if event.key == pygame.K_ESCAPE:
sys.exit()
elif event.key == pygame.K_1:
number = '1'
elif event.key == pygame.K_2:
number = '2'
elif event.key == pygame.K_3:
number = '3'
elif event.key == pygame.K_4:
number = '4'
elif event.key == pygame.K_RETURN:
number = 'RETURN'
screen.fill((0,0,200))
imgText = font.render(number, True, (255,255,255))
screen.blit(imgText, (300, 200))
pygame.display.update()
コードを実行した後、1 ~ 4 の 4 つの数字キーを押すと、図 1 に示すように、対応する番号が画面に表示されます。
図 1 は、キーに対応する番号を示しています。