Python?pygame項目實戰(zhàn)監(jiān)聽退出事件
1. 事件監(jiān)聽
首先,我們簡單回顧一下事件監(jiān)聽,可以簡單概括如下:
- 在游戲循環(huán)中,我們希望判斷用戶具體操作
- 只有捕獲到用戶具體的操作,才能有針對性的做出響應(yīng)
- 簡而言之,在游戲循環(huán)中編寫一小段代碼,通過這一小段代碼,判斷用戶的具體操作行為,這個就叫做監(jiān)聽
注意:我們想在游戲中實現(xiàn)監(jiān)聽退出事件并且退出游戲,其實代碼非常固定(代碼形式都差不多),因為幾乎所有的pygame游戲都大同小異。
2. 案例演示
2.1 案例大體思路
代碼實現(xiàn)大體思路:首先,我們考慮在游戲循環(huán)內(nèi)部再增加一個for循環(huán),來檢測一下當前這一時刻到底發(fā)生了哪些事件。然后,在循環(huán)體內(nèi)部,再增加一個條件判斷,判斷一下事件類型是否是pygame定義的QUIT事件(對應(yīng)的就是用戶點擊的關(guān)閉按鈕)。一旦發(fā)現(xiàn)用戶點擊關(guān)閉按鈕,我們就可以在if語句下方,編寫代碼退出程序。
pygame.QUIT
方法可以將所有pygame的模塊做一個卸載。exit()
將當前執(zhí)行的程序直接退出,將當前正在執(zhí)行的程序做一個終止。
2.2 代碼演示
具體代碼演示如下所示:可以在上一節(jié)(本專欄上一篇文章)中代碼的基礎(chǔ)上進行修改。
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)一調(diào)用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)內(nèi)部的代碼每秒鐘重復循環(huán)60次 # 可以指定循環(huán)體內(nèi)部的代碼執(zhí)行的頻率 clock.tick(60) # 監(jiān)聽事件 for event in pygame.event.get(): # 判斷事件類型是否是退出事件 if event.type == pygame.QUIT: print("游戲退出...") # quit卸載所有的模塊 pygame.quit() # exit()直接終止當前正在執(zhí)行的程序 exit() # 2. 修改飛機的位置 hero_rect.y -= 1 # 判斷飛機的位置 if hero_rect.y <= -126: hero_rect.y = 642 # 3. 調(diào)用blit方法繪制圖像 # 先繪制背景,在繪制飛機,就不會留下殘影(背景把上一次的飛機遮擋) screen.blit(bg, (0, 0)) screen.blit(hero, hero_rect) # 4. 調(diào)用update方法更新顯示 pygame.display.update() pygame.quit()
2.3 運行結(jié)果
代碼運行結(jié)果如下圖所示:當運行程序后,點擊退出按鈕,可以正常終止屏幕中的游戲畫面,并且在控制臺輸出如下圖結(jié)果。
到此這篇關(guān)于Python pygame項目實戰(zhàn)監(jiān)聽退出事件的文章就介紹到這了,更多相關(guān)Python 監(jiān)聽退出事件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python GUI庫圖形界面開發(fā)之PyQt5動態(tài)(可拖動控件大小)布局控件QSplitter詳細使用方法與實例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5動態(tài)(可拖動控件大小)布局控件QSplitter詳細使用方法與實例,需要的朋友可以參考下2020-03-03Python 實現(xiàn)判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中
今天小編就為大家分享一篇Python判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python實現(xiàn)手寫一個類似django的web框架示例
這篇文章主要介紹了Python實現(xiàn)手寫一個類似django的web框架,結(jié)合具體實例形式分析了Python自定義簡單控制器、URL路由、視圖模型等功能,實現(xiàn)類似Django框架的web應(yīng)用相關(guān)操作技巧,需要的朋友可以參考下2018-07-07Django REST Swagger實現(xiàn)指定api參數(shù)
這篇文章主要介紹了Django REST Swagger實現(xiàn)指定api參數(shù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Python實現(xiàn)過濾單個Android程序日志腳本分享
這篇文章主要介紹了Python實現(xiàn)過濾單個Android程序日志腳本分享,本文講解了原理、實現(xiàn)代碼、使用方法、最新代碼等內(nèi)容,需要的朋友可以參考下2015-01-01安裝python依賴包psycopg2來調(diào)用postgresql的操作
這篇文章主要介紹了安裝python依賴包psycopg2來調(diào)用postgresql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01