最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python之Pygame的Event事件模塊

 更新時間:2023年04月03日 15:19:03   作者:deepboat  
這篇文章主要介紹了Pygame的Event事件模塊,事件(Event)是 Pygame 的重要模塊之一,它是構(gòu)建整個游戲程序的核心,Pygame 定義了一個專門用來處理事件的結(jié)構(gòu),即事件隊列,本文有一定參考價值,感興趣的同學可以閱讀參考

Pygame的Event事件模塊

事件(Event)是 Pygame 的重要模塊之一,它是構(gòu)建整個游戲程序的核心,比如常用的鼠標點擊、鍵盤敲擊、游戲窗口移動、調(diào)整窗口大小、觸發(fā)特定的情節(jié)、退出游戲等,這些都可以看做是“事件”。

 事件類型

Pygame 定義了一個專門用來處理事件的結(jié)構(gòu),即事件隊列,該結(jié)構(gòu)遵循遵循隊列“先到先處理”的基本原則,通過事件隊列,我們可以有序的、逐一的處理用戶的操作(觸發(fā)事件)。下述表格列出了 Pygame 中常用的游戲事件:

名稱說明
QUIT用戶按下窗口的關(guān)閉按鈕
ATIVEEVENTPygame被激活或者隱藏
KEYDOWN鍵盤按下
KEYUP鍵盤放開
MOUSEMOTION鼠標移動
MOUSEBUTTONDOWN鼠標按下
MOUSEBUTTONUP鼠標放開
JOYAXISMOTION游戲手柄(Joystick or pad) 移動
JOYBALLMOTION 游戲球(Joy ball) 移動
JOYHATMOTION游戲手柄(Joystick) 移動
JOYBUTTONDOWN游戲手柄按下
JOYBUTTONUP游戲手柄放開
VIDEORESIZEPygame窗口縮放
VIDEOEXPOSEPygame窗口部分公開(expose)
USEREVENT觸發(fā)一個用戶事件

注意,當使用 Pygame 做游戲開發(fā)時,上述事件并非都會應用的到,因此在學習的過程中,我們要懂得觸類旁通、舉一反三。

事件處理方法

名稱說明
pygame.event.get()從事件隊列中獲取一個事件,并從隊列中刪除該事件
pygame.event.wait() 阻塞直至事件發(fā)生才會繼續(xù)執(zhí)行,若沒有事件發(fā)生將一直處于阻塞狀態(tài)
pygame.event.set_blocked() 控制哪些事件禁止進入隊列,如果參數(shù)值為None,則表示禁止所有事件進入
pygame.event.set_allowed()  控制哪些事件允許進入隊列
pygame.event.pump() 調(diào)用該方法后,Pygame 會自動處理事件隊列
pygame.event.poll() 會根據(jù)實際情形返回一個真實的事件,或者一個None
pygame.event.peek()  檢測某類型事件是否在隊列中
pygame.event.clear()從隊列中清除所有的事件
pygame.event.get_blocked() 檢測某一類型的事件是否被禁止進入隊列
pygame.event.post()  放置一個新的事件到隊列中
pygame.event.Event()  創(chuàng)建一個用戶自定義的新事件

當我們使用 Pygame 處理事件時,邏輯一般都是相似的。首先是判斷事件的類型,然后根據(jù)不同的事件操作,執(zhí)行不同的游戲操作。因此這種情況非常適合使用 if … else 語句。如下所示:

import pygame

while True:
    # 等待事件發(fā)生
    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 將鍵盤上的字母鍵、數(shù)字鍵、組合鍵等按鍵以常量的方式進行了定義,下表列出了部分常用按鍵的常量:

名稱說明
K_BACKSPACE退格鍵(Backspace)
K_TAB制表鍵(Tab)
K_CLEAR清除鍵(Clear)
K_RETURN回車鍵(Enter)
K_PAUSE暫停鍵(Pause)
K_ESCAPE退出鍵(Escape)
K_SPACE空格鍵(Space)
K_0...K_90…9
K_a...Kza…z
K_DELETE刪除鍵(delete)
K_KP0...K_KP90(小鍵盤)…9(小鍵盤)
K_F1...K_F15F1…F15
K_UP向上箭頭(up arrow)
K_DOWN向下箭頭(down arrow)
K_RIGHT向右箭頭(right arrow)
K_LEFT向左箭頭(left arrow)
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()
# 創(chuàng)建一個主窗口
screen = pygame.display.set_mode(size)
# 標題
pygame.display.set_caption("Python自學網(wǎng)")
# 創(chuàng)建游戲主循環(huán)
while True:
    # 設(shè)置初始值
    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 提供了三個鼠標事件,分別是鼠標移動(MOUSEMOTION)、鼠標按下(MOUSEBUTTONDOWN)、鼠標釋放(MOUSEBUTTONUP),不同事件類型對應著不同的成員屬性。如下所示:

pygame.event.MOUSEMOTION鼠標移動事件

    event.pos 相對于窗口左上角,鼠標的當前坐標值(x,y)
    event.rel 鼠標相對運動距離(X,Y),相對于上次事件
    event.buttons 鼠標按鈕初始狀態(tài)(0,0,0),分別對應(左鍵,滑輪,右鍵),移動過程中點擊那個鍵,相應位置變會為1

pygame.event.MOUSEBUTTONUP鼠標鍵釋放事件

    event.pos 相對于窗口左上角,鼠標的當前坐標值(x,y)
    event.button 鼠標釋放鍵編號(整數(shù))左鍵為1,按下滾動輪2、右鍵為3

pygame.event.MOUSEBUTTONDOWN 鼠標鍵按下事件

    event.pos 相對于窗口左上角,鼠標的當前坐標值(x,y)
    event.button 鼠標按下鍵編號(整數(shù)),左鍵為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自學網(wǎng)")
# 更新顯示
pygame.display.flip()
while True:
    # 等待事件發(fā)生
    event = pygame.event.wait()
    if event.type == pygame.QUIT:
        exit("成功退出")
    if event.type == pygame.MOUSEBUTTONDOWN:
        # pos 獲取鼠標當前位置
        print('鼠標按下', event.pos)
        mx, my = event.pos
        # 調(diào)用 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()

到此這篇關(guān)于Python之Pygame的Event事件模塊的文章就介紹到這了,更多相關(guān)Pygame Event事件模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MAC平臺基于Python Appium環(huán)境搭建過程圖解

    MAC平臺基于Python Appium環(huán)境搭建過程圖解

    這篇文章主要介紹了MAC平臺基于Python Appium環(huán)境搭建過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python腳本實現(xiàn)小猿口算

    Python腳本實現(xiàn)小猿口算

    最近小猿口算已經(jīng)被不少大學生攻占,一個好好的給小學生的口算題已經(jīng)變成了大學生的計算機大戰(zhàn),下面我們就來看看如何使用Python腳本就行吧小猿口算
    2024-10-10
  • Python之Pygame的Event事件模塊

    Python之Pygame的Event事件模塊

    這篇文章主要介紹了Pygame的Event事件模塊,事件(Event)是 Pygame 的重要模塊之一,它是構(gòu)建整個游戲程序的核心,Pygame 定義了一個專門用來處理事件的結(jié)構(gòu),即事件隊列,本文有一定參考價值,感興趣的同學可以閱讀參考
    2023-04-04
  • 深入淺析Pytorch中stack()方法

    深入淺析Pytorch中stack()方法

    這篇文章主要介紹了Pytorch中stack()方法的總結(jié)及理解,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 淺析python的優(yōu)勢和不足之處

    淺析python的優(yōu)勢和不足之處

    在本篇內(nèi)容中小編給大家整理了關(guān)于分析python的優(yōu)勢和不足的分析,有需要的朋友們參考下。
    2018-11-11
  • python爬蟲基礎(chǔ)教程:requests庫(二)代碼實例

    python爬蟲基礎(chǔ)教程:requests庫(二)代碼實例

    這篇文章主要介紹了python爬蟲基礎(chǔ)教程:requests庫(二),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • python實現(xiàn)猜拳游戲

    python實現(xiàn)猜拳游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)猜拳游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python從零開始訓練AI模型的實用教程

    Python從零開始訓練AI模型的實用教程

    本文介紹了如何使用Python從零開始訓練自己的AI模型,包括確定問題和數(shù)據(jù)集、數(shù)據(jù)預處理、構(gòu)建模型、訓練模型、評估和調(diào)優(yōu)模型以及部署和應用模型等步驟
    2025-02-02
  • Python標準庫os常用函數(shù)和屬性詳解

    Python標準庫os常用函數(shù)和屬性詳解

    os模塊是Python標準庫中的一個用于訪問操作系統(tǒng)相關(guān)功能的模塊,os模塊提供了一種可移植的使用操作系統(tǒng)功能的方法,本文給大家介紹下?OS標準庫常用函數(shù)和屬性,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Python字符串的全排列算法實例詳解

    Python字符串的全排列算法實例詳解

    這篇文章主要介紹了Python字符串的全排列算法,結(jié)合實例形式較為詳細的總結(jié)分析了Python字符串全排列的常見操作技巧,需要的朋友可以參考下
    2019-01-01

最新評論

沭阳县| 任丘市| 昭觉县| 灵璧县| 吐鲁番市| 大宁县| 湖州市| 吴川市| 博湖县| 托里县| 山阴县| 离岛区| 玉门市| 遵义市| 新晃| 镇宁| 万州区| 钦州市| 肇源县| 疏附县| 秭归县| 杨浦区| 岗巴县| 文山县| 娄底市| 牙克石市| 防城港市| 弋阳县| 榆林市| 崇信县| 平湖市| 彝良县| 宝丰县| 离岛区| 永春县| 山阳县| 正蓝旗| 蕉岭县| 聂拉木县| 淮阳县| 雅江县|