Pygameでマウスボタンのイベントを取得しよう
前回は画面上にある円をマウスを使って動かしました。
今回はマウスのボタンを押した時に、円の色を変えるプログラムを作ってみましょう。
マウスのボタンを押された時に円の色を変えるプログラム
前回のプログラムを流用して、マウスのボタンを押した時の処理を追加します。
pygame.event.get()で取得したイベントの種類がMOUSEBUTTONDOWNであれば、マウスのボタンが押されたというイベントです。
マウスのどのボタンが押されたのかを確認するには、受け取ったEventオブジェクトのbuttonを参照します。
1は左ボタン、2は左右ボタン同時、3は右ボタンがそれぞれ押されています。
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 58 59 |
### インポート import sys import pygame from pygame.locals import * ### 定数 WIDE = 640 # 画面横サイズ HIGHT = 400 # 画面縦サイズ R_SIZE = 50 # 円半径 W_TIME = 10 # 待ち時間 ### 画面初期化 pygame.init() surface = pygame.display.set_mode((WIDE, HIGHT)) ### 変数初期化 x = WIDE/2 # 横座標 y = HIGHT/2 # 縦座標 rgb = (255,255,255) # 円の色 ### マウスカーソル非表示 pygame.mouse.set_visible(False) ### マウスカーソル初期位置 pygame.mouse.set_pos((x, y)) ### 無限ループ while True: ### 画面描写 surface.fill((0,0,0)) pygame.draw.circle(surface, rgb, (x,y), R_SIZE, 0) pygame.display.update() pygame.time.wait(W_TIME) ### イベント取得 for event in pygame.event.get(): ### マウス移動イベント if event.type == MOUSEMOTION: ### マウス位置取得 x,y = event.pos ### マウスボタンイベント if event.type == MOUSEBUTTONDOWN: ### 押下ボタンによって円の色を変更 if event.button == 1: # 左ボタン押下 rgb = (255, 0, 0) elif event.button == 2: # 左右ボタン同時押下 rgb = (255,255,255) elif event.button == 3: # 右ボタン押下 rgb = ( 0, 0,255) ### 終了処理 if event.type == QUIT: pygame.quit() sys.exit() |
プログラムを実行すると、マウスの動きに合わせて円が動き、マウスのボタンを押すことによって円の色が変わります。
pygameのマウス操作に関しては、英語ですが以下のpygame公式サイトを参照してください。