詳解pygame捕獲鍵盤事件的兩種方式
方式1:在pygame中使用pygame.event.get()方法捕獲鍵盤事件,使用這個(gè)方式捕獲的鍵盤事件必須要是按下再?gòu)椘鸩潘阋淮巍?br /> 示例示例:
for event in pygame.event.get(): # 捕獲鍵盤事件
if event.type == pygame.QUIT: # 判斷按鍵類型
print("按下了退出按鍵")
方式2:在pygame中可以使用pygame.key.get_pressed()來返回所有按鍵元組,通過判斷鍵盤常量,可以在元組中判斷出那個(gè)鍵被按下,如果被按下則元組中就會(huì)存在這個(gè)按鍵信息。通過這樣的方式也可以捕獲到鍵盤的事件,并且不需要按下再?gòu)椘鸬牟僮?,一按下就?huì)有響應(yīng),靈活性比較高。
示例代碼:
mykeyslist = pygame.key.get_pressed() # 獲取按鍵元組信息
if mykeyslist[pygame.K_RIGHT]: # 如果按鍵按下,這個(gè)值為1
print("按下了方向右鍵")
總結(jié):
兩種方式的比較:方式1的靈活性沒有方式2的好,如果對(duì)靈活性要求高的游戲,一般建議使用方式2。
pygame按鍵持續(xù)按下響應(yīng)
在寫一個(gè)pygame 的一個(gè)小的飛機(jī)大戰(zhàn)程序但是碰到一個(gè)小問題,僅此記錄
通過鍵盤事件操控飛機(jī)的左右移動(dòng):
elif event.type == KEYDOWN:
# 檢測(cè)按鍵是否是a或者left
if event.key == K_a or event.key == K_LEFT:
plane_temp.move_left()
雖然能實(shí)現(xiàn)移動(dòng),但是每一次的移動(dòng)都需要按一下按鈕,使我感覺很難受
想實(shí)現(xiàn)可以持續(xù)按下,并且可以相應(yīng)的效果
查資料發(fā)現(xiàn)
pygame.key.set_repeat() control how held keys are repeated
set_repeat() -> None set_repeat(delay, interval) -> None When the
keyboard repeat is enabled, keys that are held down will generate
multiple pygame.KEYDOWN events. The delay is the number of
milliseconds before the first repeated pygame.KEYDOWN will be sent.
After that another pygame.KEYDOWN will be sent every interval
milliseconds. If no arguments are passed the key repeat is disabled.
When pygame is initialized the key repeat is disabled.
按鍵是默認(rèn)只能按下一次,于是就取了一個(gè)巧,查看哪些按鍵是已進(jìn)按下的,后通過循環(huán)實(shí)現(xiàn)對(duì)應(yīng)操作
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]
plane_temp.move_left()
pygame的對(duì)應(yīng)幫助文檔:
https://www.pygame.org/docs/ref/key.html#comment_pygame_key_set_repeat
到此這篇關(guān)于詳解pygame捕獲鍵盤事件的兩種方式的文章就介紹到這了,更多相關(guān)pygame捕獲鍵盤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WxPython界面利用pubsub如何實(shí)現(xiàn)多線程控制
這篇文章主要介紹了WxPython界面利用pubsub如何實(shí)現(xiàn)多線程控制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
python求列表對(duì)應(yīng)元素的乘積和的實(shí)現(xiàn)
這篇文章主要介紹了python求列表對(duì)應(yīng)元素的乘積和的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
scrapy數(shù)據(jù)存儲(chǔ)在mysql數(shù)據(jù)庫(kù)的兩種方式(同步和異步)
這篇文章主要介紹了scrapy數(shù)據(jù)存儲(chǔ)在mysql數(shù)據(jù)庫(kù)的兩種方式(同步和異步),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
python實(shí)現(xiàn)簡(jiǎn)單日志記錄庫(kù)glog的使用
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單日志記錄庫(kù)glog的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
python中的循環(huán)結(jié)構(gòu)問題
這篇文章主要介紹了python中的循環(huán)結(jié)構(gòu)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
Django Model中字段(field)的各種選項(xiàng)說明
這篇文章主要介紹了Django Model中字段(field)的各種選項(xiàng)說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python OpenCV實(shí)現(xiàn)圖像模板匹配詳解
提供一個(gè)模板圖像,一個(gè)目標(biāo)圖像,且滿足模板圖像是目標(biāo)圖像的一部分,從目標(biāo)圖像中尋找特定的模板圖像的過程,即為模板匹配。本文將詳細(xì)講解如何利用Python OpenCV實(shí)現(xiàn)圖像模板匹配,需要的可以參考一下2022-04-04
Python語(yǔ)言中的Selenium環(huán)境搭建
本文主要介紹了Python語(yǔ)言中的Selenium環(huán)境搭建,Python+Selenium這篇文章將不斷的持續(xù)更新和重構(gòu),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
python讀取圖像矩陣文件并轉(zhuǎn)換為向量實(shí)例
這篇文章主要介紹了python讀取圖像矩陣文件并轉(zhuǎn)換為向量實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06

