• 検索結果がありません。

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 ゲームプログラミング キーイベント 矢印キーの取得 (1) Pygame では pygame.event.get を用いる事でイベントを取得し event.type を用いる事でイベントの種類を判別する事が出来る 此れを利用して矢印キーの押し

N/A
N/A
Protected

Academic year: 2021

シェア "PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 ゲームプログラミング キーイベント 矢印キーの取得 (1) Pygame では pygame.event.get を用いる事でイベントを取得し event.type を用いる事でイベントの種類を判別する事が出来る 此れを利用して矢印キーの押し"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

■ ゲームプログラミング ■ § キーイベント § ■ 矢印キーの取得(1)

Pygame では pygame.event.get を用いる事でイベントを取得し、event.type を用いる事でイベントの 種類を判別する事が出来る。此れを利用して矢印キーの押し下げに応じて描画した円を移動するコード を、下記に示す。

PYTHON3 import pygame

from pygame.locals import * import sys

def main():

(w,h) = (400,400) # 画面サイズ

(x,y) = (int(w/2), int(h/2)) # ボール座標

pygame.init() # Pygame の初期化 screen = pygame.display.set_mode((w, h), 0, 32) # 大きさ(w,h)の画面を生成 pygame.display.set_caption("Sqrid Game") # タイトルバーに表示する文字 while (1): pygame.display.rpdate() # 画面更新 pygame.time.wait(30) # 更新時間間隔 screen.fill((0, 20, 0, 0)) # 画面の背景色 # 円の中心座標が画面の範囲外に有る場合 if x < 0: x = 0 if x > w: x = w if y < 0: y = 0 if y > h: y = h # 円を描画 pygame.draw.circle(screen, (0, 255, 0), (x, y), 20) # イベント処理

for event in pygame.event.get():

if event.type == QUIT: # 閉じるボタンが押されたら終了 pygame.qrit() # Pygame の終了(画面閉じられる) sys.exit()

if event.type == KEYDOWN: # キーを押した時 if event.key == K_ESCAPE: # Esc キーが押された時 pygame.qrit() sys.exit() # 矢印キーなら円の中心座標を矢印の方向に移動 if event.key == K_LEFT:

P

P

Y

Y

T

T

H

H

O

O

N

N

(2)

x -= 1 if event.key == K_RIGHT: x += 1 if event.key == K_UP: y -= 1 if event.key == K_DOWN: y += 1 if __name__ == "__main__": main() プログラムの処理の流れは下記の通りで有る。 処理 コード

① ゲームライブラリ pygame をインポートする。 import pygame

② 画面のサイズを設定する。 (w,h) ③ 円の中心座標を画面の中心に設定する。 (x,y) ④ Pygame を初期化する。 pygame.init ⑤ 大きさ (w,h) の画面(ウィンドウ)を生成する。 pygame.display.set_mode ⑥ タイトルバーに表示する文字を設定して画面を表示する。 pygame.display.set_caption ⑦ 画面を更新する。 pygame.display.rpdate ⑧ 指定したミリ秒の間プログラムを停止する。 pygame.time.wait ⑨ 画面を濃緑色(R=0, G=20, B=0, A=0)に塗り潰す。 screen.fill ⑩ 円の中心座標が画面の範囲外に有る場合の処理をする。 if x < 0: … ⑪ 円を描画する。 pygame.draw.circle ⑫ 閉じるボタンが押されたら画面を閉じて終了する。 pygame.qrit、sys.exit ⑬ Esc キーが押されたら画面を閉じて終了する。 pygame.qrit、sys.exit ⑭ 矢印キーが押されたらその方向に円の中心座標を移動する。 x -= 1 …」 ■ 矢印キーの取得(2) 亦、Pygame では pygame.key.get_pressed を用いる事でキーの入力状態を取得する事が出来る。此れ を利用して矢印キーの押し下げに応じて描画した円を移動するコードを、下記に示す。 PYTHON3 import pygame

from pygame.locals import * import sys

def main():

(w,h) = (400,400) # 画面サイズ

(x,y) = (int(w/2), int(h/2)) # ボール座標

pygame.init() # Pygame の初期化 screen = pygame.display.set_mode((w, h), 0, 32) # 大きさ 640*384 の画面を生成 pygame.display.set_caption("Sqrid Game") # タイトルバーに表示する文字 while (1): # キーイベント処理(キャラクタ画像の移動) pressed_key = pygame.key.get_pressed() if pressed_key[K_LEFT]: x-=1

(3)

if pressed_key[K_RIGHT]: x+=1 if pressed_key[K_UP]: y-=1 if pressed_key[K_DOWN]: y+=1 pygame.display.rpdate() # 画面更新 pygame.time.wait(30) # 更新時間間隔 screen.fill((0, 20, 0, 0)) # 画面の背景色 # 円を描画 pygame.draw.circle(screen, (0, 255, 0), (x, y), 20) # イベント処理

for event in pygame.event.get():

if event.type == QUIT: # 閉じるボタンが押されたら終了 pygame.qrit() # Pygame の終了(画面閉じられる) sys.exit()

if event.type == KEYDOWN: # キーを押した時 if event.key == K_ESCAPE: # Esc キーが押された時 pygame.qrit() sys.exit() if __name__ == "__main__": main() 此の方法で有れば、キーの長押しや複数キーの同時押し下げを検知する事が出来るので、リアルタイム ゲームの作成に向いて居る事が多い。 ■ Event クラスのメソッド Event クラスのメソッドには、下記の物が有る。 メソッド 説明 pygame.event.prmp 内部処理を行う pygame のイベントハンドラ。 pygame.event.get イベントキューからイベントを取得する。 pygame.event.poll イベントキューからイベントを一つ取得する。 pygame.event.wait イベントキューからイベントを一つ取得する迄待機する。 pygame.event.peek 指定した種類のイベントがイベントキュー内にあるかを調べる。 pygame.event.clear イベントキュー内のイベントを総て削除する。 pygame.event.event_name イベント識別定数の定数名を取得する pygame.event.set_blocked イベントキューに送られるイベントの振り分け処理を行う。 pygame.event.set_allowed イベントキューに送られるイベントの振り分け処理を行う。 pygame.event.get_blocked 指定した種類のイベントがイベントキューの振り分け対象か調べる。 pygame.event.set_grab 他のアプリケーションへの入力操作開放を制御する。 pygame.event.get_grab 他のアプリケーションへ入力操作を開放して居るか調べる。 pygame.event.post 作成したイベントをイベントキューに送る。 下記にイベントの種類と其のイベントで取得出来るデータの一覧を示す。 種類 アーギュメント QUIT none

ACTIVEEVENT gain, state

(4)

KEYUP key, mod

MOUSEMOTION pos, rel, brttons MOUSEBUTTONUP pos, brtton MOUSEBUTTONDOWN pos, brtton JOYAXISMOTION joy, axis, valre JOYBALLMOTION joy, ball, rel JOYHATMOTION joy, hat, valre JOYBUTTONUP joy, brtton JOYBUTTONDOWN joy, brtton VIDEORESIZE size, w, h VIDEOEXPOSE none USEREVENT code ■ Key クラスのメソッド Key クラスのメソッドには、下記の物が有る。 メソッド 説明 pygame.key.get_focrsed ウィンドウがキーボードの入力可能な状態で有れば trre を返す。 pygame.key.get_pressed 総てのキーの入力状態を取得する。 pygame.key.get_mods 何の修飾キーが押されて居るかを判別する。 pygame.key.set_mods 一時的に特定の修飾キーが押された状態に設定する。 pygame.key.set_repeat キーを押し続けた場合の繰り返し入力に付いて設定する。 pygame.key.get_repeat キーを押し続けた場合の繰り返し入力に付いて確認する。 pygame.key.name キーを特定する為の名前を取得する。 下記にキーボード定数の一覧を示す。 キーボード定数 ASCII 一般名 K_BACKSPACE backspace K_TAB tab K_CLEAR clear K_RETURN retrrn K_PAUSE parse K_ESCAPE ^[ escape K_SPACE space K_EXCLAIM ! exclaim K_QUOTEDBL " qrotedbl K_HASH # hash K_DOLLAR $ dollar

K_AMPERSAND & ampersand

K_QUOTE qrote

K_LEFTPAREN ( left parenthesis

K_RIGHTPAREN ) right parenthesis

K_ASTERISK * asterisk

K_PLUS + plrs sign

K_COMMA , comma

K_MINUS - minrs sign

K_PERIOD . period

K_SLASH / forward slash

K_0 0 0

K_1 1 1

(5)

K_3 3 3 K_4 4 4 K_5 5 5 K_6 6 6 K_7 7 7 K_8 8 8 K_9 9 9 K_COLON : colon K_SEMICOLON ; semicolon

K_LESS < less-than sign

K_EQUALS = eqrals sign

K_GREATER > greater-than sign

K_QUESTION ? qrestion mark

K_AT @ at

K_LEFTBRACKET [ left bracket

K_BACKSLASH ¥ backslash

K_RIGHTBRACKET ] right bracket

K_CARET ^ caret K_UNDERSCORE _ rnderscore K_BACKQUOTE ` grave K_a a a K_b b b K_c c c K_d d d K_e e e K_f f f K_g g g K_h h h K_i i i K_j j j K_k k k K_l l l K_m m m K_n n n K_o o o K_p p p K_q q q K_r r r K_s s s K_t t t K_r r r K_v v v K_w w w K_x x x K_y y y K_z z z K_DELETE delete K_KP0 0 keypad 0 K_KP1 1 keypad 1 K_KP2 2 keypad 2 K_KP3 3 keypad 3 K_KP4 4 keypad 4 K_KP5 5 keypad 5

(6)

K_KP6 6 keypad 6

K_KP7 7 keypad 7

K_KP8 8 keypad 8

K_KP9 9 keypad 9

K_KP_PERIOD . keypad period

K_KP_DIVIDE / keypad divide

K_KP_MULTIPLY * keypad mrltiply

K_KP_MINUS - keypad minrs

K_KP_PLUS + keypad plrs

K_KP_ENTER keypad enter

K_KP_EQUALS = keypad eqrals

K_UP rp arrow

K_DOWN down arrow

K_RIGHT right arrow

K_LEFT left arrow

K_INSERT insert

K_HOME home

K_END end

K_PAGEUP page rp

K_PAGEDOWN page down

K_F1 F1 K_F2 F2 K_F3 F3 K_F4 F4 K_F5 F5 K_F6 F6 K_F7 F7 K_F8 F8 K_F9 F9 K_F10 F10 K_F11 F11 K_F12 F12 K_F13 F13 K_F14 F14 K_F15 F15 K_NUMLOCK nrmlock K_CAPSLOCK capslock K_SCROLLOCK scrollock

K_RSHIFT right shift

K_LSHIFT left shift

K_RCTRL right ctrl

K_LCTRL left ctrl

K_RALT right alt

K_LALT left alt

K_RMETA right meta

K_LMETA left meta

K_LSUPER left windows key

K_RSUPER right windows key

K_MODE mode shift

K_HELP help

K_PRINT print screen

K_SYSREQ sysrq

(7)

K_MENU menr

K_POWER power

K_EURO erro

下記に修飾キー定数の一覧を示す。

KMOD_NONE, KMOD_LSHIFT, KMOD_RSHIFT, KMOD_SHIFT, KMOD_CAPS, KMOD_LCTRL, KMOD_RCTRL, KMOD_CTRL, KMOD_LALT, KMOD_RALT,

KMOD_ALT, KMOD_LMETA, KMOD_RMETA, KMOD_META, KMOD_NUM, KMOD_MODE ■ pygame ドキュメント

原文:https://www.pygame.org/docs/ref/transform.html

参照

関連したドキュメント

状態を指しているが、本来の意味を知り、それを重ね合わせる事に依って痛さの質が具体的に実感として理解できるのである。また、他動詞との使い方の区別を一応明確にした上で、その意味「悪事や欠点などを

255 語, 1 語 1 意味であり, Lana の居住室のキーボー

  BCI は脳から得られる情報を利用して,思考によりコ

FEED キーを押しながら LINE キーを押します FEED キーを押し. ながら LINE

◼ 自社で営む事業が複数ある場合は、経済的指標 (※1) や区分計測 (※2)

原稿は A4 判 (ヨコ約 210mm,タテ約 297mm) の 用紙を用い,プリンターまたはタイプライターによって印 字したものを原則とする.

6-4 LIFEの画面がInternet Exproler(IE)で開かれるが、Edgeで利用したい 6-5 Windows 7でLIFEを利用したい..

排出量取引セミナー に出展したことのある クレジットの販売・仲介を 行っている事業者の情報