Event (イベント) は Pygame の重要なモジュールの 1 つで、一般的に使用されるマウスのクリック、キーボードのタップ、ゲーム ウィンドウの移動、ウィンドウ サイズ、特定のプロットのトリガー、ゲームの終了などはすべて「イベント」と見なすことができます。
Pygame は、イベントの処理に特に使用される構造、つまりイベント キューを定義します。この構造は、キューの「先着順」の基本原則に従います。ユーザー操作 (トリガーされたイベント) は、順番に 1 つずつ処理できます。次の表は、Pygame で一般的に使用されるゲーム イベントの一覧です:
Description | |
---|---|
QUIT
| ユーザーがウィンドウの閉じるボタンを押した|
ATIVEEVENT
| Pygame有効化または非表示|
キーボードを押す |
|
キーボードリリース |
|
マウスの動き |
|
#マウスが押されました |
#マウスボタンを押しました |
| #JOYAXISMOTION|
##JOYBALLMOTION |
#ゲームボール(ジョイ ボール)移動 |
JOYHATMOTION #ゲーム コントローラー(ジョイスティック) 移動 |
|
ゲーム ハンドルが押されました |
##JOYBUTTONUP |
ゲーム ハンドルが解放されました
|
VIDEORESIZE |
Pygame ウィンドウのスケーリング
|
VIDEOEXPOSE |
Pygame ウィンドウの部分的な露出 (露出)
|
##USEREVENT |
|
## ゲーム開発に Pygame を使用する場合の注意点, 上記のすべての事象が当てはまるわけではないため、学習の過程で推論の方法や推論の仕方を知る必要があります。 |
イベント処理メソッド
|
名前 |
pygame.event.get()
| pygame.event.set_blocked() |||||||||||||||||||||||||||||||||||
| pygame.event.set_allowed() |||||||||||||||||||||||||||||||||||
| pygame.event .pump() |||||||||||||||||||||||||||||||||||
##pygame.event.poll() |
実際の状況に応じて処理されます 実際のイベント、または None を返します | ||||||||||||||||||||||||||||||||||
pygame.event.peek() |
特定の種類のイベントがキューにあるかどうかを検出します | ||||||||||||||||||||||||||||||||||
pygame.event.clear() |
キューからすべてのイベントをクリアします | ||||||||||||||||||||||||||||||||||
#pygame.event.get_blocked()
| 特定の種類のイベントがキューに入ることが禁止されているかどうかを検出します|||||||||||||||||||||||||||||||||||
pygame.event.post()
| 新しいイベントをキューに入れる|||||||||||||||||||||||||||||||||||
pygame.event.Event ()
| 新しいユーザー定義イベントを 1 つ作成します|||||||||||||||||||||||||||||||||||
|
K_TAB |
|
K_CLEAR |
| #K_RETURN#Enter キー (Enter) |
K_PAUSE |
一時停止ボタン |
#K_ESCAPE | #エスケープボタン|
スペースバー (スペース) |
|
0…9 | ##K_a...Kz |
| K_DELETE|
##K_KP0...K_KP9 |
0 (小さいキーボード)...9 (小さいキーボード) |
K_F1...K_F15 |
F1…F15 |
K_UP |
上矢印 |
#K_DOWN |
下矢印 |
#K_RIGHT |
右矢印 |
K_LEFT
|
左矢印 |
KMOD_ALT |
Alt キーを同時に押します |
次に示すように、「画像の移動」の例を使用して、キーボード イベントの処理プロセスを理解しましょう。以下: import pygame import sys # 初始化pygame pygame.init() # 定义变量 size = width, height = 600, 400 bg = (255, 255, 255) # 加载logo图 img = pygame.image.load("./python.png") # 获取图像的位置 position = img.get_rect() # 创建一个主窗口 screen = pygame.display.set_mode(size) # 标题 pygame.display.set_caption("Python自学网") # 创建游戏主循环 while True: # 设置初始值 site = [0, 0] for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() # 图像移动 KEYDOWN 键盘按下事件 # 通过 key 属性对应按键 if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: site[1] -= 8 if event.key == pygame.K_DOWN: site[1] += 8 if event.key == pygame.K_LEFT: site[0] -= 8 if event.key == pygame.K_RIGHT: site[0] += 8 # 移动图像 position = position.move(site) # 填充背景 screen.fill(bg) # 放置图片 screen.blit(img, position) # 更新显示界面 pygame.display.flip() | マウス イベントの処理|
pygame.event.MOUSEMOTION マウス移動イベント ウィンドウの左上隅を基準とした、マウスの現在の座標値 (x, y) | event.relmouse 最後のイベントを基準とした相対移動距離 (X,Y)event.buttonsマウス ボタンの初期状態 (0,0,0)。(左ボタン、プーリー、右ボタンに対応) button) それぞれ、移動中にどのボタンがクリックされたかに応じて、対応する位置が 1 |
イベント .button マウスリリースキー番号 (整数) 左ボタンが 1、スクロールホイールが押された状態が 2、右ボタンが 3
ウィンドウの左上隅、マウスの現在の座標値 (x, y)を基準としたevent.pos。event.button マウス ボタン数値 (整数)、左ボタンは 1、スクロール ホイールを押します 2、右ボタンは 3、前方にスクロールします 4、プーリーを後方に回転させます 5
import pygame from random import randint # 初始化程序 pygame.init() screen = pygame.display.set_mode((450, 400)) pygame.display.set_caption("Python自学网") # 更新显示 pygame.display.flip() while True: # 等待事件发生 event = pygame.event.wait() if event.type == pygame.QUIT: exit("成功退出") if event.type == pygame.MOUSEBUTTONDOWN: # pos 获取鼠标当前位置 print('鼠标按下', event.pos) mx, my = event.pos # 调用 pygame.draw 模块画圆 pygame.draw.circle(screen, (255, 255, 0), (mx, my), 50) # 处理完,更新显示 pygame.display.update() if event.type == pygame.MOUSEBUTTONUP: print('鼠标弹起') pass if event.type == pygame.MOUSEMOTION: print('鼠标移动') mx, my = event.pos # 随机生成 RGB 颜色值 r = randint(0, 255) g = randint(0, 255) b = randint(0, 255) pygame.draw.circle(screen, (r, g, b,), (mx, my), 50) # 处理完,更新显示 pygame.display.update()
以上がPython で Pygame の Event イベント モジュールを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。