佳木斯湛栽影视文化发展公司

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

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

熱門標簽:Win7旗艦版 呼叫中心市場需求 企業(yè)做大做強 客戶服務 電話運營中心 百度AI接口 硅谷的囚徒呼叫中心 語音系統(tǒng)

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

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

方式2:在pygame中可以使用pygame.key.get_pressed()來返回所有按鍵元組,通過判斷鍵盤常量,可以在元組中判斷出那個鍵被按下,如果被按下則元組中就會存在這個按鍵信息。通過這樣的方式也可以捕獲到鍵盤的事件,并且不需要按下再彈起的操作,一按下就會有響應,靈活性比較高。

示例代碼:

mykeyslist = pygame.key.get_pressed() # 獲取按鍵元組信息
if mykeyslist[pygame.K_RIGHT]: # 如果按鍵按下,這個值為1
  print("按下了方向右鍵")
 

總結:
兩種方式的比較:方式1的靈活性沒有方式2的好,如果對靈活性要求高的游戲,一般建議使用方式2。

pygame按鍵持續(xù)按下響應

在寫一個pygame 的一個小的飛機大戰(zhàn)程序但是碰到一個小問題,僅此記錄

通過鍵盤事件操控飛機的左右移動:

elif event.type == KEYDOWN:

    # 檢測按鍵是否是a或者left
     if event.key == K_a or event.key == K_LEFT:
       plane_temp.move_left()

雖然能實現(xiàn)移動,但是每一次的移動都需要按一下按鈕,使我感覺很難受

想實現(xiàn)可以持續(xù)按下,并且可以相應的效果

查資料發(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.

按鍵是默認只能按下一次,于是就取了一個巧,查看哪些按鍵是已進按下的,后通過循環(huán)實現(xiàn)對應操作

key_pressed = pygame.key.get_pressed()
  if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]
    plane_temp.move_left()

pygame的對應幫助文檔:
https://www.pygame.org/docs/ref/key.html#comment_pygame_key_set_repeat

到此這篇關于詳解pygame捕獲鍵盤事件的兩種方式的文章就介紹到這了,更多相關pygame捕獲鍵盤內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

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

標簽:安康 喀什 山西 崇左 海南 山西 長沙 濟南

巨人網(wǎng)絡通訊聲明:本文標題《詳解pygame捕獲鍵盤事件的兩種方式》,本文關鍵詞  ;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    称多县| 天镇县| 乐平市| 嘉鱼县| 和林格尔县| 高密市| 巍山| 旬阳县| 鄯善县| 沂源县| 隆尧县| 乐安县| 高碑店市| 曲靖市| 武强县| 洛宁县| 蕉岭县| 买车| 锦州市| 镇江市| 铜陵市| 方正县| 五常市| 安阳市| 桦川县| 如东县| 洛南县| 潞西市| 江永县| 射阳县| 高台县| 阳东县| 凌源市| 通道| 锡林浩特市| 长阳| 扎兰屯市| 上饶市| 信丰县| 惠安县| 康定县|