Pygameでキーボードのキーを取得する方法

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 は、キーに対応する番号を示しています。

おすすめ

転載: blog.csdn.net/hou09tian/article/details/131499340