Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame中的分层按键_Python_Pygame - Fatal编程技术网

Python pygame中的分层按键

Python pygame中的分层按键,python,pygame,Python,Pygame,屏幕两侧有两种颜色。 我希望能够使用左箭头选择屏幕的左半部分,然后使用上下箭头操纵颜色,直到满意为止 然而,我当前的代码不起作用。问题似乎在于需要一系列关键命令,即左箭头,然后上下操纵颜色 red = (100, 0, 0) green = (0, 100, 0) display_width = 800 display_height = 600 dw2 = display_width/2 calibration_exit = False while not calibration_exit:

屏幕两侧有两种颜色。 我希望能够使用左箭头选择屏幕的左半部分,然后使用上下箭头操纵颜色,直到满意为止

然而,我当前的代码不起作用。问题似乎在于需要一系列关键命令,即左箭头,然后上下操纵颜色

red = (100, 0, 0)
green = (0, 100, 0)
display_width = 800
display_height = 600
dw2 = display_width/2
calibration_exit = False

while not calibration_exit:

        pygame.event.pump()
        pygame.draw.rect( screen,  red,   [  0   , 0, dw2, display_height ] )
        pygame.draw.rect( screen,  green, [ dw2  , 0, dw2, display_height ] )
        pygame.display.update()

        # Get Keys #
        keys = pygame.key.get_pressed()

        if keys[K_LEFT]:

            while not keys[K_RIGHT]:

                keys = pygame.key.get_pressed()

                if keys[K_UP]:
                    red = list(red)
                    red[0] += 10
                    red = tuple(red)
                    pygame.draw.rect( screen,  red,   [  0   , 0, dw2, display_height ] )
                    pygame.display.update()


                if keys[K_DOWN]:
                    red = list(red)
                    red[0] -= 10
                    red = tuple(red)
                    pygame.draw.rect( screen,  red,   [  0   , 0, dw2, display_height ] )
                    pygame.display.update()

想象一下,你只能在每帧调用
pygame.key.get_pressed()
一次,以及
pygame.display.update()
每帧调用一次,等等。你不能执行标准的if-then逻辑,因为你每次都从
的根“开始”而
循环。这意味着您必须单独跟踪您的状态。比如:

calibration_exit = False
selected = None
while not calibration_exit:
    pygame.event.pump()
    pygame.draw.rect( screen,  red,   [  0   , 0, dw2, display_height ] )
    pygame.draw.rect( screen,  green, [ dw2  , 0, dw2, display_height ] )
    pygame.display.update()

    keys = pygame.key.get_pressed()
    if keys[K_LEFT]:
        selected = "left"
    if keys[K_RIGHT]:
        selected = "right"

    if selected == "left":
        if keys[K_UP]:
            # modify 'left' by going up
        if keys[K_DOWN]:
            # modify 'left' by going down
    elif selected == "right":
        if keys[K_UP]:
            # modify 'right' by going up
        if keys[K_DOWN]:
            # modify 'right' by going down

想象一下,你只能在每帧调用
pygame.key.get_pressed()
一次,以及
pygame.display.update()
每帧调用一次,等等。你不能执行标准的if-then逻辑,因为你每次都从
的根“开始”而
循环。这意味着您必须单独跟踪您的状态。比如:

calibration_exit = False
selected = None
while not calibration_exit:
    pygame.event.pump()
    pygame.draw.rect( screen,  red,   [  0   , 0, dw2, display_height ] )
    pygame.draw.rect( screen,  green, [ dw2  , 0, dw2, display_height ] )
    pygame.display.update()

    keys = pygame.key.get_pressed()
    if keys[K_LEFT]:
        selected = "left"
    if keys[K_RIGHT]:
        selected = "right"

    if selected == "left":
        if keys[K_UP]:
            # modify 'left' by going up
        if keys[K_DOWN]:
            # modify 'left' by going down
    elif selected == "right":
        if keys[K_UP]:
            # modify 'right' by going up
        if keys[K_DOWN]:
            # modify 'right' by going down

使用左箭头设置
left_side=True/False
,然后在按下右箭头时检查
left_side
,使用左箭头设置
left_side=True/False
,然后在按下右箭头时检查
left_side
,我在发布之前大约5秒就想到了这个问题!当然谢谢你的回答!我只是在你发帖前5秒想到这个!当然谢谢你的回答!