在python中使用函数和状态循环

时间:2017-12-12 14:48:03

标签: python arrays pygame

我有一个学校项目,我一直在虔诚地努力工作。我尝试过缩进,去凹陷,定义局部和全局变量,甚至询问我的老师。无济于事。在状态3中我想要发生的是,当你点击一个按钮时,它会改变函数内的状态,一旦循环结束,状态就会改变,因此while循环也是如此。

def buttonCollide():
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
textSurf, textRect = text_objects("Level 1", smallText)
textRect.center = (200,250)
screen.blit(textSurf, textRect)
    if 170+100 > mouse[0] > 130 and 270+50 > mouse[1] > 170: ### BUTTON 1
        pygame.draw.circle(screen,selected_white,(200,250),70,0)
        textSurf, textRect = text_objects("Level 1", smallText)
        textRect.center = (200,250)
        screen.blit(textSurf, textRect)
        if 170+100 > mouse[0] > 130 and 270+50 > mouse[1] > 200 and event.type == pygame.MOUSEBUTTONDOWN:
        state = 4

while state == 3:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
            quit()
    screen.fill(dark_blue)
    drawMenu()
    buttonCollide()
    pygame.display.update()

在此循环退出ButtonCollide()之后应切换到状态4,但由于某种原因,它在退出函数后不断将状态设置回3。

1 个答案:

答案 0 :(得分:1)

您遇到范围问题,因为脚本和函数中的状态变量不共享相同的范围。 在hibernate.order_inserts行后面添加global state

喜欢

def buttonCollide():