pygame實現鍵盤的連續監控

pygame對鍵盤的連續監聽,供大傢參考,具體內容如下

大傢請看下面這一段代碼:

for event in pygame.event.get():
  if event.type == pygame.QUIT:
   exit()
  elif event.type == pygame.KEYDOWN:
   if event.key == pygame.K_RIGHT:
    print("右")
   if event.key == pygame.K_UP:
    print("上")
   if event.key == pygame.K_DOWN:
    print("下")
   if event.key == pygame.K_LEFT:
    print("左")

大傢首次監控鍵盤事件一般都會寫出這樣的代碼我們著重來看一下對鍵盤上下左右鍵的監控。我們運行代碼塊我們會發現這幾行代碼和我們的想法是不一樣的,我們在開發遊戲的時候,我們大部分時候希望是可以連續控制,這樣可以大大減少我們的手部疲勞,對玩傢們也會非常的友好,但是我們現在的代碼塊,是敲一下鍵盤響應一次事件。所以我們要對代碼進行改進,改進的方法有以下兩種,大傢可以根據自己的理解進行選擇。

方法一:設置中間變量

moving_r = False
moving_l = False
moving_u = False
moving_d = False
while True:
 for event in pygame.event.get():
  if event.type == pygame.QUIT:
   exit()
  elif event.type == pygame.KEYDOWN:
   if event.key == pygame.K_RIGHT:
    moving_r = True
   if event.key == pygame.K_UP:
    moving_u = True
   if event.key == pygame.K_DOWN:
    moving_d = True
   if event.key == pygame.K_LEFT:
    moving_l = True
  elif event.type == pygame.KEYUP:
   if event.key == pygame.K_RIGHT:
    moving_r = False
   if event.key == pygame.K_UP:
    moving_u = False
   if event.key == pygame.K_DOWN:
    moving_d = False
   if event.key == pygame.K_LEFT:
    moving_l = False
 if moving_r:
  print("右")
 elif moving_u:
  print("上")
 elif moving_d:
  print("下")
 elif moving_l:
  print("左")

引入四個moving變量將四個變量的初值均設為Flase,用pygame的KEYDOWN和KEYUP方法來改變四個變量的值,以此來實現對鍵盤的連續監控,這種方法雖然很好理解,但是如果是小白對代碼的重構不是很熟悉會顯得非常綴餘。

方法二:運用pygame中get_pressed()

# 鍵盤的連續監聽
 Key_pressed = pygame.key.get_pressed()
 if Key_pressed[K_UP]:
  print("上")
 if Key_pressed[K_DOWN]:
  print("下")
 if Key_pressed[K_LEFT]:
  print("左")
 if Key_pressed[K_RIGHT]:
  print("右")

這樣也是能連續監聽鍵盤事件,但是這裡需要註意一下if半段語句後面是中括號並非是小括號,第二個要註意的地方便是鍵盤名稱,如果直接輸入K_UP等是會報錯的,有兩種解決辦法一種是導入pygame的方法:

from pygame import *

這樣就不會報錯瞭,另一種是在K_UP 前面加上pygame如:

if Key_pressed[pygame.K_UP]:
  print("上")

這樣也是可行的。

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。