如何在Pygame中獲取鍵盤輸入?


對於構建影片遊戲和多媒體應用程式,Python使用者經常使用Pygame庫。任何遊戲都必須包含人類輸入,這是其最重要的組成部分之一。對於許多遊戲來說,來自鍵盤的使用者輸入是一個至關重要的來源。

在Pygame中,鍵盤輸入是指捕獲鍵盤輸入並將其用於控制遊戲元素的過程。Python的“pygame.event”模組是Pygame提供的一個方便的工具,用於接收鍵盤輸入。當按下鍵盤上的按鍵時,此模組的“pygame.KEYDOWN”事件會被觸發。

在Pygame中獲取鍵盤輸入的演算法

在Pygame中,您必須採取一些步驟才能接收鍵盤輸入。以下是一些可幫助您入門的方法:

步驟1 - 首先必須初始化Pygame:這可以透過使用“pygame.init()”函式來完成。此函式會初始化遊戲中將使用的每個Pygame模組。

  • 設定顯示模式 - 初始化Pygame後,必須設定顯示模式。呼叫“pygame.display.set_mode()”函式將完成此操作。此函式生成的Surface物件充當所建立的Pygame視窗的表示。

    第一步是構建一個遊戲迴圈,這是一個不斷執行並監聽事件的迴圈。建立一個使用“pygame.event.get()”函式的while迴圈將使您能夠做到這一點。此方法會返回自上次呼叫以來發生的每個事件的列表。

  • 處理事件 - 必須在遊戲迴圈中處理“pygame.event.get()”函式返回的事件。您可以透過迭代遍歷事件列表來確定列表中的任何事件是否是鍵盤事件。

  • 處理鍵盤事件 - 要處理在事件列表中看到的鍵盤事件,請查詢按下的按鍵。“event”物件的“event.type”屬性可用於完成此操作。如果型別是“pygame.KEYDOWN”,則可以透過訪問“event.key”屬性來獲取按下的按鍵。

更新遊戲狀態:處理鍵盤輸入後,必須更新遊戲的狀態。這可以透過重新定位遊戲物件、更新分數或執行任何其他與遊戲相關的操作來完成。

更新顯示:要完成此過程,請執行“pygame.display.update()”函式以更新顯示。此函式會更新Pygame視窗的內容。

您可以按照這些步驟使用鍵盤輸入在Pygame中建立互動式遊戲。

在Pygame中獲取鍵盤輸入的方法

在這種方法中,我們將解釋說,當使用Python pygame模組執行諸如沿特定方向移動角色之類的任務時,我們有時需要使用鍵盤輸入。為了實現這一點,我們必須觀察所有事件。透過檢視事件,我們可以看到Pygame如何跟蹤事件。get()方法。

每當按下或釋放按鍵時,Pygame.event()會分別將pygame.KEYDOWN和pygame.KEYUP事件排隊。

例如,如果我們想確定是否按下了某個按鍵,我們將監視是否發生了任何pygame.KEYDOWN事件。因此,我們將瞭解是否按下了某個按鍵。確定按鍵是否按下或未按下的程式碼可以表示為:

方法一:檢測按鍵是否按下

# importing pygame module
import pygame

# importing sys module
import sys

# initialising pygame
pygame.init()

# creating display
display = pygame.display.set_mode((300, 300))

# creating a running loop
while True:
	
	# creating a loop to check events that
	# are occurring
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			pygame.quit()
			sys.exit()
		
		# checking if keydown event happened or not
		if event.type == pygame.KEYDOWN:
		
			# if keydown event happened
			# than printing a string to output
			print("A key has been pressed")

輸出

A key has been pressed
A key has been pressed
A key has been pressed
A key has been pressed

執行此程式碼後,觀察到每次按下按鍵時,字串“已按下按鍵”都會列印在終端上。

方法二:檢測按下了哪個按鍵

在第二種方法中,我們必須檢查事件才能確定按下了哪個按鍵。此pygame鍵與key變數相關。例如,如果字母“A”的pygame鍵是“K_a”,我們將比較事件。如果帶有K和A的鍵相同,則按下了“A”鍵。

不同的鍵盤按鍵和相關的pygame按鍵如下:

例如,建立一個程式碼來確定是否按下了“A”或“J”或“P”或“M”鍵。驗證程式碼將是:

# importing pygame module
import pygame

# importing sys module
import sys

# initialising pygame
pygame.init()

# creating display
display = pygame.display.set_mode((300, 300))

# creating a running loop
while True:
	
	# creating a loop to check events that
	# are occurring
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			pygame.quit()
			sys.exit()
		
		# checking if keydown event happened or not
		if event.type == pygame.KEYDOWN:
			
			# checking if key "A" was pressed
			if event.key == pygame.K_a:
			   print("Key A has been pressed")
			
			# checking if key "J" was pressed
			if event.key == pygame.K_j:
			   print("Key J has been pressed")
			
			# checking if key "P" was pressed
			if event.key == pygame.K_p:
			   print("Key P has been pressed")
			
			# checking if key "M" was pressed
			if event.key == pygame.K_m:
			   print("Key M has been pressed")

輸出

key P has been pressed
key J has been pressed
key M has been pressed
key M has been pressed
key J has been pressed
key P has been pressed
key P has been pressed

執行此程式碼並按下指定的按鍵時,相應的字串將列印在終端上。

結論

記錄鍵盤輸入後,您可以使用它來控制遊戲方面。例如,您可以使用方向鍵移動,或使用空格鍵跳躍玩家角色。在Pygame中,記錄鍵盤輸入並將其用於控制遊戲物件的方法稱為鍵盤輸入。Pygame提供了一種簡單的方法來獲取鍵盤輸入,方法是使用“pygame.event”模組,該模組具有一個在按下鍵盤上的按鍵時觸發的“pygame.KEYDOWN”事件。透過記錄鍵盤輸入,您可以使遊戲更具互動性和趣味性。

更新於:2023年7月24日

2K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告