Pygameを使ってキーボードの操作をしてみよう
今回はPygameを使って、キーボードを操作してボールを動かすプログラムを作ります。
Pythonスクリプト
今回のスクリプトは、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
### インポート import sys import pygame from pygame.locals import * ### 定数 WIDE = 640 # 画面横サイズ HIGHT = 400 # 画面縦サイズ M_SIZE = 10 # 円半径 M_DOT = 20 # 移動ドット W_TIME = 20 # 待ち時間 ### メイン関数 def main(): pygame.init() surface = pygame.display.set_mode((WIDE, HIGHT)) ### 変数初期化 x = int(WIDE / 2) - M_SIZE # 横座標 y = int(HIGHT / 2) - M_SIZE # 縦座標 while True: ### 描画 surface.fill((0,0,0)) pygame.draw.circle(surface, (255,255,255), (x,y), M_SIZE, 0) pygame.display.update() pygame.time.wait(W_TIME) ### イベント取得 for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: if event.key == K_ESCAPE: exit() if event.key == K_LEFT: if x > 0 + M_SIZE: x -= M_DOT if event.key == K_RIGHT: if x < WIDE - M_SIZE: x += M_DOT if event.key == K_UP: if y > 0 + M_SIZE: y -= M_DOT if event.key == K_DOWN: if y < HIGHT - M_SIZE: y += M_DOT ### 終了関数 def exit(): pygame.quit() sys.exit() ### メイン関数呼び出し if __name__ == "__main__": main() |
スクリプト解説
4行目
今回はキーボード操作のキーワードを多く使うため、*(アスタリスク)を指定しています。
19、20行目
ボールの初期位置を画面中央にしています。
なお、ボールが画面からはみ出さないように、半径分ずらしています。
31~48行目
イベントをチェックして、入力されたキーにしたがって、ボールの動きを操作します。
31、32行目
ウインドウ右上の✕(バツ)ボタンが押された場合は、終了関数を呼び出します。
35、36行目
Esc(エスケープ)キーが押された場合は、終了関数を呼び出します。
37~48行目
上下左右のカーソルキーが押された場合に、それぞれ次のボールの座標を設定します。