按键时如何在pygame中连续移动表面?

时间:2019-11-16 17:50:16

标签: python pygame

我正在尝试制作一个游戏,可以通过按下左右箭头键来左右移动飞船。您在下面看到的代码是我目前拥有的代码:

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_RIGHT:
            self.ship_image_rect.x += 2
        if event.key == pygame.K_LEFT:
            self.ship_image_rect.x -= 2

但是当我按向右或向左箭头键时,它不会连续移动,而是会移动一次并停止。我必须反复按箭头键以进行任何有意义的动作,这绝对不是我想要做的。

如何改进此代码,以便在按下任一箭头键时我的船可以在任一方向连续移动?

1 个答案:

答案 0 :(得分:2)

您必须使用:

int saved_stdin = dup(0); 
dup2(fd[0], 0); // child: read from fd[0]
// do reading
dup2(saved_stdin, 0); // restore stdin

这将表示代表整个键盘的布尔值列表。检查是否在当前循环迭代中按下了LEFT_ARROW:

keys=pygame.key.get_pressed()

查看此答案:https://stackoverflow.com/a/16044380/9392216