gpt4 book ai didi

python - pygame.key.get_pressed() 在我的代码中不起作用,我不知道为什么

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:51 24 4
gpt4 key购买 nike

我最近开始使用 python 并决定使用 pygame 创建一个游戏,其中基本上有方 block 掉落,你必须越过它们。您可以使用向左键和向右键移动,但如果您按住它们,什么也不会发生,我不知道为什么,因为在我的代码中,我相信我已经在第 114 到 122 行之间涵盖了这一点。

虽然不是游戏结束:

for event in pygame.event.get(): 

if event.type == pygame.QUIT:
sys.exit()

x = player_pos[0]
y = player_pos[1]

keys = pygame.key.get_pressed() # Check if a key is pressed

if keys[pygame.K_LEFT] and x != 0:
x -= 25
print("move left")
if keys[pygame.K_RIGHT] and x != 750:
print("move right")
x += 25
player_pos = [x, y]

draw_enemies(enemy_list)
pygame.draw.rect(screen, RED, (player_pos[0], player_pos[1], player_size, player_size))

clock.tick(30)
pygame.display.update()

我希望在按下左右按钮时能够移动,但我不能,我只能在按下然后松开时移动。

最佳答案

这个问题是因为位置的改变是在事件循环中完成的,但是事件循环只在事件发生时执行,比如 pygame.KEYDOWNpygame.键上键。所以位置不会连续变化,如果按下任何键或释放任何键,它只会改变一次。

请注意,如果按住 K_LEFTK_RIGHT 并且发生其他事件(如 MOUSEMOTION),位置甚至会改变。您可以验证,按下 K_LEFT 并移动鼠标,播放器 将会移动。

将改变位置的代码移出事件循环并在主循环范围内执行:

for event in pygame.event.get(): 

if event.type == pygame.QUIT:
sys.exit()

#<--
#<--
x = player_pos[0]
y = player_pos[1]

keys = pygame.key.get_pressed() # Check if a key is pressed

if keys[pygame.K_LEFT] and x != 0:
x -= 25
print("move left")
if keys[pygame.K_RIGHT] and x != 750:
print("move right")
x += 25
player_pos = [x, y]
#<--
#<--

关于python - pygame.key.get_pressed() 在我的代码中不起作用,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55751662/

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