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秒想到这个!当然谢谢你的回答!