Python pygame 項目實戰(zhàn)事件監(jiān)聽
1. 在游戲循環(huán)中監(jiān)聽事件
事件event:
- 就是游戲啟動后,用戶針對游戲所做的操作
- 例如:點擊關閉按鈕,點擊鼠標,按下鍵盤
監(jiān)聽:
- 在游戲循環(huán)中,判斷用戶具體操作
- 只有捕獲到用戶具體的操作,才能有針對性的做出響應
- 簡而言之,在游戲循環(huán)中編寫一小段代碼,通過這一小段代碼,判斷用戶的具體操作行為,這個就叫做監(jiān)聽
代碼實現:
- pygame中通過
pygame.event.get()可以獲得用戶當前所做動作的事件列表(因為同一時間用戶所作的操作可能會有很多件) - 用戶可以同一時間做很多事情
- 提示:這段代碼非常的固定,幾乎所有的pygame游戲都大同小異!
2. 案例演示
2.1 案例概覽
本節(jié),我們將在上一小節(jié)的基礎上(詳情請見本專欄上一篇文章),完成捕獲用戶所做的動作事件列表。
以下代碼中,使用了pygame.event.get()方法,get方法返回的類型為列表類型,因此,我們使用event_list變量來接收get方法返回的結果。但是,如果僅僅是這樣改造代碼,運行時在程序控制臺輸出了很多空的列表。因此,我們可以考慮增加if判斷,判斷是否用戶進行了操作事件(是否有操作事件發(fā)生)。此時,再運行程序,就可以輸出很多操作細節(jié)了。(可以移動鼠標或者按下鍵盤試試),控制臺會輸出捕獲的用戶操作。
import pygame
pygame.init()
# 創(chuàng)建游戲的窗口 640*642
screen = pygame.display.set_mode((640, 642))
# 繪制背景圖像
bg = pygame.image.load("./飛機大戰(zhàn)資料包/images/background1.jpg")
screen.blit(bg, (0, 0))
# 繪制英雄的飛機
hero = pygame.image.load("./飛機大戰(zhàn)資料包/images/me1.png")
screen.blit(hero, (280, 500))
# 可以在所有繪制工作完成之后,統(tǒng)一調用update方法
pygame.display.update()
# 創(chuàng)建時鐘對象
clock = pygame.time.Clock()
# 游戲循環(huán)->意味著游戲的正式開始
# 1. 定義rect記錄飛機的初始位置
hero_rect = pygame.Rect(280, 500, 102, 126)
# 游戲循環(huán)->意味著游戲的正式開始
while True:
# 希望無限循環(huán)內部的代碼每秒鐘重復循環(huán)60次
# 可以指定循環(huán)體內部的代碼執(zhí)行的頻率
clock.tick(60)
# 捕獲事件
event_list = pygame.event.get()
if len(event_list) > 0:
print(event_list)
# 2. 修改飛機的位置
hero_rect.y -= 1
# 判斷飛機的位置
if hero_rect.y <= -126:
hero_rect.y = 642
# 3. 調用blit方法繪制圖像
# 先繪制背景,在繪制飛機,就不會留下殘影(背景把上一次的飛機遮擋)
screen.blit(bg, (0, 0))
screen.blit(hero, hero_rect)
# 4. 調用update方法更新顯示
pygame.display.update()
pygame.quit()2.2 運行結果
運行結果如下所示:


到此這篇關于Python pygame 項目實戰(zhàn)事件監(jiān)聽的文章就介紹到這了,更多相關Python事件監(jiān)聽內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
PyQt5?python?數據庫?表格動態(tài)增刪改詳情
這篇文章主要介紹了PyQt5?python?數據庫?表格動態(tài)增刪改詳情,首先手動連接數據庫與下一個的程序連接數據庫是獨立的2個部分,下面來看看文章的詳細介紹2022-01-01
使用Python Flask構建輕量級靈活的Web應用實例探究
Flask是一個流行的Python Web框架,以其輕量級、靈活和易學的特性受到開發(fā)者的喜愛,本文將深入探討Flask框架的各個方面,通過詳實的示例代碼,幫助大家更全面地了解和掌握這一強大的工具,2024-01-01
Keras中的多分類損失函數用法categorical_crossentropy
這篇文章主要介紹了Keras中的多分類損失函數用法categorical_crossentropy,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

