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.type”属性来实现此操作。如果类型是”pygame.KEYDOWN”,则可以通过访问”event.key”属性获取按下的键。
更新游戏状态:处理键盘输入后,必须更新游戏的状态。这可以通过重新定位游戏元素、更新得分或执行与游戏相关的任何其他操作来完成。
更新显示:要完成该过程,请执行”pygame.display.update()”函数以更新显示。该函数会更新Pygame窗口的内容。
按照这些步骤,您可以使用键盘输入在Pygame中创建交互式游戏。
以获取Pygame中的键盘输入的方法
在这种方法中,我们将解释在使用Python pygame模块时,有时需要使用键盘输入来执行任务,例如将角色移动到特定方向。为了做到这一点,我们必须观察所有的事件。我们可以通过查看events.get()方法来看到Pygame如何跟踪发生的事件。
Pygame.event()分别在按下或释放键时排队pygame.KEYDOWN和pygame.KEYUP事件。
例如,如果我们想确定是否按下了一个键,我们将监视是否发生了任何pygame.KEYDOWN事件。结果,我们将得知是否按下了一个键。确定是否按下了一个键的代码可以表示如下 –
方法1:检测键是否被按下
# 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
运行此代码后,每次按下一个键时,终端上都会显示字符串”A key has been pressed”。
方法2:检测按下了哪个键
在第二种方法中,我们必须检查事件以确定按下了哪个键。这个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.event”模块,在键盘上按下键时触发的“pygame.KEYDOWN”事件可以简单地获取键盘输入。通过记录键盘输入,您可以使您的游戏更具互动性和趣味性,为用户提供更好的体验。