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

2022-09-28 21:12:27 字數 1655 閱讀 3840

方式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 的乙個小的飛機大戰程式但是碰到乙個小問題,僅此記錄

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

elif event.type == keydown:

# 檢測按鍵是否是a或者left

if event.key == k_a or event.key == k_left:

www.cppcns.com plane_temp.move_left()

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

想實現可以持續按下,並且可以相應的效果

查資料發現www.cppcns.com

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 th程式設計客棧at 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.

按鍵是預設只能按下一次,於是就取了乙個巧,檢視哪些按鍵是已進按下的,後通過迴圈實現對應操作

key_pressed = pygame.key.get_pressed()

if key_pressed[p or key_pressed[pygame.k_left]

plane_temp.move_left()

pygame的對應幫助文件:

pygame 鍵盤和滑鼠事件的處理

所謂事件,就是程式上發生的事。例如使用者按下鍵盤上的某個鍵或者單擊 移動滑鼠,對於這些事件,遊戲程式需要作出反應。如 pygame 影象 圖形繪製 中例子,程式會一直執行下去,直到使用者關閉視窗而產生乙個 quit 事件,pygame 會接收使用者的各種操作 例如按鍵盤上的鍵 移動滑鼠等 產生事件。...

flex捕獲鍵盤長按事件

專案需要,在flex air中對長按鍵做出處理,我是這樣定義長按鍵的。當鍵盤按下時記錄按下狀態ispressed true 鍵盤彈起時ispressed flase 新增計時器,長按5s,觸發處理事件。xmlns s library xmlns mx library xmlns utils com....

QT 之鍵盤事件(捕獲鍵盤按下 鬆開事件)

我們在做軟體時候,經常會碰到這樣的場景,比如按下f5進行重新整理功能,按下f1進行幫助之類的快捷鍵方式。那麼在qt中該怎樣做呢?查閱文件,qt已經實現了這一系列的鍵盤事件 void qwidget keypressevent qkeyevent event 鍵盤按下事件 void qwidget k...