pygame连续和同步的键输入

2024-09-27 17:39:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我又被困在网上找不到任何有效的解决办法。我试图使用pygame及其关键输入来控制各种事情。现在我需要同时使用几个键。我的代码如下:

pygame.key.set_reapeat(50,50)
bProgramLoop = True
while (bProgramLoop == True):

    for event in pygame.event.get():
        if (event.type == pygame.QUIT):
            bProgramLoop = False
        if (pygame.key.get_pressed()[pygame.K_LEFT]):
            EXECUTE_FUNCTION1()
            print "left"
        if (pygame.key.get_pressed()[pygame.K_RIGHT]):
            EXECUTE_FUNCTION2()
            print "right"

现在我的问题是: 当我按下“LEFT of RIGHT”时,它正确且连续地记录我按下了LEFT/RIGHT。但当我按住“左”键并轻触“右”键时,它会显示左键和右键都被按下了,但它会停止显示“左键”仍然被按下。在

有什么想法吗? 任何帮助都将不胜感激。 米沙


Tags: keyrighteventtrueexecutegetifleft
2条回答

你拼错了repeat inpygame.key.重复(). 我纠正了这一点,这对我很有效。在

def main():
    while Running:
        check_events()
        update()
        clock.tick(FPS) 

def check_events():
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            sys.exit()

            if key == pygame.K_q:
                Running = False
                return

        if (pygame.key.get_pressed()[pygame.K_LEFT]):
            #EXECUTE_FUNCTION1()
            print "left"
        if (pygame.key.get_pressed()[pygame.K_RIGHT]):
            #EXECUTE_FUNCTION2()
            print "right"

在我的代码中,“repeat”拼写正确。在

我找到了解决问题的办法。以上代码需要修改。在

pygame.key.set_repeat(50,50)
bProgramLoop = True
while (bProgramLoop == True):

    for event in pygame.event.get():
        if (event.type == pygame.QUIT):
            bProgramLoop = False
        if (event.type == pyame.KEYDOWN):
            if (event.key == pygame.K_a)   # if A is pressed
                bKeyA = True               # set the Boolean True
            if (event.key == pygame.K_s)   
                bKeyS = True
        if (event.type == pyame.KEYDOWN):
            if (event.key == pygame.K_a)   # if A is released
                bKeyA = False# set the Boolean False
            if (event.key == pygame.K_s)   
                bKeyS = False

    if (bKeyA == True):
        Execute_function1()
    if (bKeyB == True):
        Execute_function2()

我仔细检查了一下,repeat的拼写是否正确,而且一旦敲击另一个键盘,它将无法继续输入键盘。问题是,据我所知,甚至在按下某个键时也会发生一次。同时按下另一个键时,事件将丢失。在

因此,解决方案是将一个变量设置为true,直到键被抬起为止,因此该变量被设置为false。在

相关问题 更多 >

    热门问题