如何在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+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告