我最近开始使用python,并决定使用pygame创建一个游戏,该游戏基本上存在掉块现象,您必须越过它们。 您可以使用向左和向右键移动,尽管如果您一直按它们,则什么也不会发生,我也不知道为什么,因为在我的代码中,我相信我在114和122之间的行中对此进行了覆盖。
而不是game_over:
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()
我希望能够在按下左右按钮的同时移动,但是我不能只在按下然后松开时移动。
答案 0 :(得分:2)
引起此问题的原因是位置的更改是在事件循环中完成的,但是仅在发生事件(例如 a b c
0 1 2016 0
1 1 2017 1
2 1 2018 2
3 1 2019 3
4 2 2000 0
5 2 2000 0
6 2 2000 0
7 2 2000 0
8 3 2007 0
9 3 2008 1
10 3 2014 2
或pygame.KEYDOWN
)时才执行事件循环。
因此,位置不会连续变化,仅在按下任何键或释放任何键时它才会更改一次。
请注意,如果按住pygame.KEYUP
或K_LEFT
,甚至会发生位置变化,例如K_RIGHT
。您可以验证,按MOUSEMOTION
并移动鼠标,播放器将移动。
将代码移动到事件循环以外的位置,并在主循环的范围内进行操作:
K_LEFT