我正在尝试制作一个游戏,可以通过按下左右箭头键来左右移动飞船。您在下面看到的代码是我目前拥有的代码:
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
但是当我按向右或向左箭头键时,它不会连续移动,而是会移动一次并停止。我必须反复按箭头键以进行任何有意义的动作,这绝对不是我想要做的。
如何改进此代码,以便在按下任一箭头键时我的船可以在任一方向连续移动?
答案 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()