gpt4 book ai didi

python - 如何在 pygame 中禁用按键和按住?

转载 作者:行者123 更新时间:2023-12-04 08:30:22 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





What all things happens inside pygame when I press a key? When to use pygame.event==KEYDOWN

(1 个回答)



How to get keyboard input in pygame?

(10 个回答)


9 个月前关闭。




我正在努力如何做到这一点,以便在 Pygame 中按下某个键时,您无法继续按住该键。
我正在处理玩家跳跃,但除非只按一次键,否则它不起作用。
这是我的按键代码:

keys = pygame.key.get_pressed()
if keys[pygame.K_UP] and not self.jumping:
self.jumping = True
这是我的跳跃方法(也包括重力)
def gravity(self):
# if the player isn't jumping
if not self.jumping:
# set acceleration constant and accelerate
self.accel_y = PLAYER_ACCELERATION
self.y_change += self.accel_y

# terminal velocity
if abs(self.y_change) >= PLAYER_MAX_SPEED_Y:
# set the y change to the max speed
self.y_change = PLAYER_MAX_SPEED_Y

self.y += self.y_change

else: # jumping
self.accel_y = -PLAYER_ACCELERATION_JUMPING
self.y_change += self.accel_y

if abs(self.y_change) >= PLAYER_MAX_SPEED_JUMPING:
self.jumping = False

self.y += self.y_change

print(self.y_change)
玩家可以一直按住向上箭头键,玩家就会飞起来——这不好。我希望你只能按一次,然后 self.jumping设置为 False当它达到最高速度时(我已经实现了)

最佳答案

不要使用 pygame.key.get_pressed() 在这种情况下,但使用键盘事件(见 pygame.event)。
pygame.key.get_pressed() 返回一个包含每个键状态的列表。如果按下某个键,则该键的状态为 True , 否则 False .使用 pygame.key.get_pressed() 评估按钮的当前状态并获得连续移动:
当键的状态改变时,键盘事件只发生一次。 KEYDOWN每次按下一个键时都会发生一次事件。 KEYUP每次释放键时发生一次。将键盘事件用于单个操作或逐步移动。
例如:

while True:

for event in pygame.event.get():

if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and not self.jumping:
self.jumping = True

关于python - 如何在 pygame 中禁用按键和按住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65049343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com