日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Python?pygame?項(xiàng)目實(shí)戰(zhàn)事件監(jiān)聽_python

作者:ZacheryZHANG??????? ? 更新時(shí)間: 2022-10-09 編程語言

1. 在游戲循環(huán)中監(jiān)聽事件

事件event:

  • 就是游戲啟動(dòng)后,用戶針對游戲所做的操作
  • 例如:點(diǎn)擊關(guān)閉按鈕,點(diǎn)擊鼠標(biāo),按下鍵盤

監(jiān)聽:

  • 在游戲循環(huán)中,判斷用戶具體操作
  • 只有捕獲到用戶具體的操作,才能有針對性的做出響應(yīng)
  • 簡而言之,在游戲循環(huán)中編寫一小段代碼,通過這一小段代碼,判斷用戶的具體操作行為,這個(gè)就叫做監(jiān)聽

代碼實(shí)現(xiàn):

  • pygame中通過pygame.event.get()可以獲得用戶當(dāng)前所做動(dòng)作的事件列表(因?yàn)橥粫r(shí)間用戶所作的操作可能會(huì)有很多件)
  • 用戶可以同一時(shí)間做很多事情
  • 提示:這段代碼非常的固定,幾乎所有的pygame游戲都大同小異!

2. 案例演示

2.1 案例概覽

本節(jié),我們將在上一小節(jié)的基礎(chǔ)上(詳情請見本專欄上一篇文章),完成捕獲用戶所做的動(dòng)作事件列表。

以下代碼中,使用了pygame.event.get()方法,get方法返回的類型為列表類型,因此,我們使用event_list變量來接收get方法返回的結(jié)果。但是,如果僅僅是這樣改造代碼,運(yùn)行時(shí)在程序控制臺輸出了很多空的列表。因此,我們可以考慮增加if判斷,判斷是否用戶進(jìn)行了操作事件(是否有操作事件發(fā)生)。此時(shí),再運(yùn)行程序,就可以輸出很多操作細(xì)節(jié)了。(可以移動(dòng)鼠標(biāo)或者按下鍵盤試試),控制臺會(huì)輸出捕獲的用戶操作。

import pygame
pygame.init()

# 創(chuàng)建游戲的窗口 640*642
screen = pygame.display.set_mode((640, 642))

# 繪制背景圖像
bg = pygame.image.load("./飛機(jī)大戰(zhàn)資料包/images/background1.jpg")
screen.blit(bg, (0, 0))

# 繪制英雄的飛機(jī)
hero = pygame.image.load("./飛機(jī)大戰(zhàn)資料包/images/me1.png")
screen.blit(hero, (280, 500))

# 可以在所有繪制工作完成之后,統(tǒng)一調(diào)用update方法
pygame.display.update()

# 創(chuàng)建時(shí)鐘對象
clock = pygame.time.Clock()

# 游戲循環(huán)->意味著游戲的正式開始

# 1. 定義rect記錄飛機(jī)的初始位置
hero_rect = pygame.Rect(280, 500, 102, 126)

# 游戲循環(huán)->意味著游戲的正式開始
while True:
    # 希望無限循環(huán)內(nèi)部的代碼每秒鐘重復(fù)循環(huán)60次
    # 可以指定循環(huán)體內(nèi)部的代碼執(zhí)行的頻率
    clock.tick(60)

    # 捕獲事件
    event_list = pygame.event.get()
    if len(event_list) > 0:
        print(event_list)

    # 2. 修改飛機(jī)的位置
    hero_rect.y -= 1
    # 判斷飛機(jī)的位置
    if hero_rect.y <= -126:
        hero_rect.y = 642

    # 3. 調(diào)用blit方法繪制圖像
    # 先繪制背景,在繪制飛機(jī),就不會(huì)留下殘影(背景把上一次的飛機(jī)遮擋)
    screen.blit(bg, (0, 0))
    screen.blit(hero, hero_rect)

    # 4. 調(diào)用update方法更新顯示
    pygame.display.update()
pygame.quit()

2.2 運(yùn)行結(jié)果

運(yùn)行結(jié)果如下所示:

原文鏈接:https://juejin.cn/post/7131375568104194055

欄目分類
最近更新