ホームページ  >  記事  >  バックエンド開発  >  Python で Pygame の Event イベント モジュールを使用する方法

Python で Pygame の Event イベント モジュールを使用する方法

WBOY
WBOY転載
2023-05-18 11:58:252883ブラウズ

Pygame の Event モジュール

Event (イベント) は Pygame の重要なモジュールの 1 つで、一般的に使用されるマウスのクリック、キーボードのタップ、ゲーム ウィンドウの移動、ウィンドウ サイズ、特定のプロットのトリガー、ゲームの終了などはすべて「イベント」と見なすことができます。

イベント タイプ

Pygame は、イベントの処理に特に使用される構造、つまりイベント キューを定義します。この構造は、キューの「先着順」の基本原則に従います。ユーザー操作 (トリガーされたイベント) は、順番に 1 つずつ処理できます。次の表は、Pygame で一般的に使用されるゲーム イベントの一覧です:

#NameDescriptionユーザーがウィンドウの閉じるボタンを押したPygame有効化または非表示##KEYDOWNKEYUPMOUSEMOTIONマウスボタンダウン#マウスボタンを押しました#マウスを離しました#JOYAXISMOTIONゲーム ハンドル (ジョイスティックまたはパッド) の動き##JOYBUTTONDOWN##JOYBUTTONUPVIDEORESIZEVIDEOEXPOSEユーザー イベントをトリガーする## ゲーム開発に Pygame を使用する場合の注意点, 上記のすべての事象が当てはまるわけではないため、学習の過程で推論の方法や推論の仕方を知る必要があります。 名前説明
QUIT
ATIVEEVENT
キーボードを押す
キーボードリリース
マウスの動き
#マウスが押されました
##JOYBALLMOTION #ゲームボール(ジョイ ボール)移動
JOYHATMOTION#ゲーム コントローラー(ジョイスティック) 移動
ゲーム ハンドルが押されました
ゲーム ハンドルが解放されました
Pygame ウィンドウのスケーリング
Pygame ウィンドウの部分的な露出 (露出) ##USEREVENT
イベント処理メソッド

pygame.event.get()イベント キューからイベントを取得し、キューからイベントを削除しますpygame.event.wait() イベントが発生するまでブロックは続行されません。イベントが発生しない場合、ブロックされたままになります pygame.event.set_blocked() どのイベントがキューに入ることが禁止されるかを制御します。パラメーター値が None の場合、すべてのイベントがキューに入ることが禁止されることを意味します pygame.event.set_allowed() どのイベントがキューに入ることができるかを制御しますpygame.event .pump() このメソッドを呼び出した後、Pygame は自動的にイベント キューを処理します 実際の状況に応じて処理されます 実際のイベント、または None を返します特定の種類のイベントがキューに入ることが禁止されているかどうかを検出します新しいイベントをキューに入れる新しいユーザー定義イベントを 1 つ作成します

Pygame を使用してイベントを処理する場合、ロジックは一般的に似ています。最初にイベントの種類を決定し、次にイベントの種類ごとに異なるゲーム アクションを実行する必要があります。したがって、この状況には if & else ステートメントが最適です。以下に示すように:

import pygame

while True:
    # 等待事件发生
    event = pygame.event.wait()
    if event.type == pygame.QUIT:
        exit()
    if event.type == pygame.MOUSEBUTTONDOWN:
        print('鼠标按下', event.pos)
    if event.type == pygame.MOUSEBUTTONUP:
        print('鼠标弹起')
    if event.type == pygame.MOUSEMOTION:
        print('鼠标移动')
        # 键盘事件
    if event.type == pygame.KEYDOWN:
        # 打印按键的英文字符
        print('键盘按下', chr(event.key))
    if event.type == pygame.KEYUP:
        print('键盘弹起')

キーボード イベントの処理

キーボード イベントによって提供される key 属性を使用して、押されたキーボード キーを取得できます。 Pygame は、キーボード上の文字キー、数字キー、組み合わせキー、その他のキーを定数の形式で定義します。次の表に、よく使用されるいくつかのキーの定数を示します。名前

##pygame.event.poll()
pygame.event.peek() 特定の種類のイベントがキューにあるかどうかを検出します
pygame.event.clear() キューからすべてのイベントをクリアします
#pygame.event.get_blocked()
pygame.event.post()
pygame.event.Event ()
手順K_BACKSPACEBackspaceTab クリアキー (Clear) #K_RETURN#Enter キー (Enter) 一時停止ボタン#エスケープボタン#K_SPACE#K_0...K_9#a…zK_DELETE削除キー (削除)0 (小さいキーボード)...9 (小さいキーボード)F1…F15上矢印 下矢印マウス イベントの処理Pygame は、マウスの移動 (MOUSEMOTION)、マウスの押下 (MOUSEBUTTONDOWN)、およびマウスのリリース (MOUSEBUTTONUP) という 3 つのマウス イベントを提供します。さまざまなメンバー属性に対応します。以下に示すように: event.relmouse 最後のイベントを基準とした相対移動距離 (X,Y)pygame.event.MOUSEBUTTONUP マウス ボタンを離すevent
K_TAB
K_CLEAR
K_PAUSE
#K_ESCAPE
スペースバー (スペース)
0…9 ##K_a...Kz
##K_KP0...K_KP9
K_F1...K_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.buttonsマウス ボタンの初期状態 (0,0,0)。(左ボタン、プーリー、右ボタンに対応) button) それぞれ、移動中にどのボタンがクリックされたかに応じて、対応する位置が 1
events.pos に変更されます (マウス ボタンの左上隅を基準)ウィンドウ、マウスの現在の座標値 (x, y)

イベント .button マウスリリースキー番号 (整数) 左ボタンが 1、スクロールホイールが押された状態が 2、右ボタンが 3

pygame.event.MOUSEBUTTONDOWN マウス ボタンを押します。event

ウィンドウの左上隅、マウスの現在の座標値 (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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。