濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > 詳解pygame捕獲鍵盤事件的兩種方式

詳解pygame捕獲鍵盤事件的兩種方式

熱門標(biāo)簽:千陽自動(dòng)外呼系統(tǒng) 江蘇客服外呼系統(tǒng)廠家 工廠智能電話機(jī)器人 清遠(yuǎn)360地圖標(biāo)注方法 原裝電話機(jī)器人 平頂山外呼系統(tǒng)免費(fèi) 在哪里辦理400電話號(hào)碼 西藏智能外呼系統(tǒng)五星服務(wù) 400電話申請(qǐng)服務(wù)商選什么

方式1:在pygame中使用pygame.event.get()方法捕獲鍵盤事件,使用這個(gè)方式捕獲的鍵盤事件必須要是按下再彈起才算一次。
示例示例:

for event in pygame.event.get(): # 捕獲鍵盤事件
  if event.type == pygame.QUIT: # 判斷按鍵類型
    print("按下了退出按鍵")

方式2:在pygame中可以使用pygame.key.get_pressed()來返回所有按鍵元組,通過判斷鍵盤常量,可以在元組中判斷出那個(gè)鍵被按下,如果被按下則元組中就會(huì)存在這個(gè)按鍵信息。通過這樣的方式也可以捕獲到鍵盤的事件,并且不需要按下再彈起的操作,一按下就會(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)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • pygame實(shí)現(xiàn)鍵盤和鼠標(biāo)事件的處理
  • Python中pygame的mouse鼠標(biāo)事件用法實(shí)例
  • python基于pygame實(shí)現(xiàn)響應(yīng)游戲中事件的方法(附源碼)
  • 詳解Python中Pygame鍵盤事件

標(biāo)簽:白城 安慶 西安 日照 股票 天水 錦州 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解pygame捕獲鍵盤事件的兩種方式》,本文關(guān)鍵詞  詳解,pygame,捕獲,鍵盤,事件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解pygame捕獲鍵盤事件的兩種方式》相關(guān)的同類信息!
  • 本頁收集關(guān)于詳解pygame捕獲鍵盤事件的兩種方式的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    托里县| 天等县| 布拖县| 龙海市| 巴彦淖尔市| 恭城| 清水县| 洛川县| 通河县| 吉首市| 阳信县| 太谷县| 通山县| 永寿县| 交城县| 会东县| 茌平县| 宕昌县| 安徽省| 修武县| 济阳县| 宁晋县| 明光市| 远安县| 巫山县| 亚东县| 张家川| 五大连池市| 尼玛县| 陇南市| 津市市| 新安县| 平罗县| 云南省| 仁怀市| 惠安县| 富蕴县| 天台县| 利津县| 遵义市| 永寿县|