国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python】【進階篇】八、Pygame的Event事件模塊

這篇具有很好參考價值的文章主要介紹了【Python】【進階篇】八、Pygame的Event事件模塊。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

八、Pygame的Event事件模塊

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

8.1 事件類型

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

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

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

8.2 事件處理方法

名稱 說明
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('鍵盤彈起')

8.3 處理鍵盤事件

鍵盤事件提供了一個 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_9 0…9
K_a...Kz a…z
K_DELETE 刪除鍵(delete)
K_KP0...K_KP9 0(小鍵盤)…9(小鍵盤)
K_F1...K_F15 F1…F15
K_UP 向上箭頭(up arrow)
K_DOWN 向下箭頭(down arrow)
K_RIGHT 向右箭頭(right arrow)
K_LEFT 向左箭頭(left arrow)
KMOD_ALT 同時按下Alt鍵

下面通過“圖片移動”示例來了解鍵盤事件的處理過程,如下所示:文章來源地址http://www.zghlxwxcb.cn/news/detail-669900.html

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 屬性對應(yīng)按鍵
        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()

8.4 處理鼠標事件

Pygame 提供了三個鼠標事件,分別是鼠標移動(MOUSEMOTION)、鼠標按下(MOUSEBUTTONDOWN)、鼠標釋放(MOUSEBUTTONUP),不同事件類型對應(yīng)著不同的成員屬性。如下所示:

pygame.event.MOUSEMOTION鼠標移動事件

    event.pos 相對于窗口左上角,鼠標的當前坐標值(x,y)
    event.rel 鼠標相對運動距離(X,Y),相對于上次事件
    event.buttons 鼠標按鈕初始狀態(tài)(0,0,0),分別對應(yīng)(左鍵,滑輪,右鍵),移動過程中點擊那個鍵,相應(yīng)位置變會為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事件模塊的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • python安裝pygame模塊可能問題解決

    python安裝pygame模塊可能問題解決

    一般我們添加python中模塊有兩種方法 1、 在開發(fā)軟件pycharm中文件中設(shè)置-項目 然后點擊加號,輸入自己要安裝的模塊,如pygame 但是我這種安裝存在可能安裝失敗,但是簡單 第二種就是用系統(tǒng)cmd命令進行安裝 win+R打開cmd,先輸入pip install wheel安裝wheel工具,檢查pip是不是最新版

    2024年02月12日
    瀏覽(26)
  • python模塊: pygame(自己動手寫游戲)

    python模塊: pygame(自己動手寫游戲)

    目錄 一、pygame的安裝 ?二、pygame基礎(chǔ)操作 1.基本窗體設(shè)置 2.surface組件 ?3.event事件 一、pygame的安裝 在pycharm 左下角的終端上輸入指令pip install pygame,按下回車鍵執(zhí)行下載,推薦下載到虛擬環(huán)境上,即路徑前方帶有(venv)?;蛘卟皇褂胮ycharm,在控制窗口輸入執(zhí)行該命令也可以(控

    2024年03月21日
    瀏覽(33)
  • 【Python】【進階篇】五、Pygame的Transform圖像變形

    pygame.transform 模塊允許您對加載、創(chuàng)建后的圖像進行一系列操作,比如調(diào)整圖像大小、旋轉(zhuǎn)圖片等操作,常用方法如下所示: 名稱 說明 pygame.transform.scale() 將圖片縮放至指定的大小,并返回一個新的 Surface 對象。 pygame.transform.rotate() 將圖片旋轉(zhuǎn)至指定的角度。 pygame.transform.

    2024年02月02日
    瀏覽(18)
  • 【Python】【進階篇】十一、Pygame的精靈和碰撞檢測

    精靈(英文譯為 Sprite),其實在一個游戲程序中,精靈本質(zhì)指的是一張張小尺寸的圖片,比如游戲中的各種道具、人物、場景裝飾等,它們都可以看做成一張張小的“精靈”圖。 精靈有個特點就是允許精靈之間進行交互,也稱之為碰撞,而碰撞檢測,指的就是檢測兩個精靈

    2024年02月13日
    瀏覽(18)
  • 【Python】【進階篇】十、Pygame的Font文本和字體

    Pygame 通過 pygame.font 模塊來創(chuàng)建一個字體對象,從而實現(xiàn)繪制文本的目的。 該模塊的常用方法如下所示: 名稱 說明 pygame.font.init() 初始化字體模塊 pygame.font.quit()? 取消初始化字體模塊 pygame.font.get_init()? 檢查字體模塊是否被初始化,返回一個布爾值。 pygame.font.get_default_font

    2024年02月07日
    瀏覽(22)
  • Python pygame(GUI編程)模塊最完整教程(4)

    Python pygame(GUI編程)模塊最完整教程(4)

    上一篇文章: Python pygame(GUI編程)模塊最完整教程(3)_pygame教程pdf_Python-ZZY的博客-CSDN博客 總目錄: README.md · Python-ZZY/Python-Pygame最完整教程 - Gitee.com 參考資料:pygame.draw — pygame-ce v2.4.0 documentation draw模塊提供了一些直接在表面上繪制常用圖形的操作,如繪制矩形、圓形、多

    2024年02月14日
    瀏覽(29)
  • Python pygame(GUI編程)模塊最完整教程(2)

    Python pygame(GUI編程)模塊最完整教程(2)

    上一篇文章: Python pygame(GUI編程)模塊最完整教程(1)_pygame模塊詳解_Python-ZZY的博客-CSDN博客 總目錄: README.md · Python-ZZY/Python-Pygame最完整教程 - Gitee.com 參考資料:pygame.font — pygame-ce v2.4.0 documentation pygame中繪制文字的第一步是載入字體。載入字體的方式通常有兩種,第一種是

    2024年02月04日
    瀏覽(29)
  • Python學習之pygame模塊介紹并制作代碼雨

    Python學習之pygame模塊介紹并制作代碼雨

    對Python游戲有所了解的朋友都知道,在2D的游戲制作中,經(jīng)常會用到一個模塊pygame,他能幫助我們實現(xiàn)很多方便使用的功能,例如繪制窗口,反饋鍵盤鼠標信息,播放音頻文件,渲染圖片文字等等功能。 今天咱們通過pygame模塊實現(xiàn)一個代碼雨的簡單示例,順便講解下子模塊中

    2024年02月10日
    瀏覽(20)
  • Python pygame(GUI編程)模塊最完整教程(5)

    Python pygame(GUI編程)模塊最完整教程(5)

    上一篇文章:Python pygame(GUI編程)模塊最完整教程(4)_pygame繪制圓角矩形_Python-ZZY的博客-CSDN博客 ? 總目錄: README.md · Python-ZZY/Python-Pygame最完整教程 - Gitee.com 參考資料:pygame.display — pygame-ce v2.3.1 documentation pg.display.set_mode方法用于創(chuàng)建窗口。 size參數(shù)指定窗口的大小,一般是

    2024年02月14日
    瀏覽(56)
  • Python pygame(GUI編程)模塊最完整教程(1)

    Python pygame(GUI編程)模塊最完整教程(1)

    提示:下滑文章左側(cè)可以查看目錄!本教程分為多篇,總目錄如下。 ?總目錄: README.md · Python-ZZY/Python-Pygame最完整教程 - Gitee.com pygame是python中一個流行的GUI編程模塊,是專門為了開發(fā)游戲而設(shè)計的。這是一個第三方模塊,是SDL和Python的接口。 pygame的最新官網(wǎng)是:https://pyg

    2024年02月02日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包