Python函数调用播放器输入

时间:2017-03-15 17:21:21

标签: python function call

我在使用pygame的python中遇到了问题。我希望在用户进行特定输入后“跳转到”某个功能(在这种情况下按下向上箭头键),然后在该功能(start1)中我再次回拨到main()再次按下“向上箭头键”我想进入start()

当我运行程序时,我得到了这个:

RecursionError:超出最大递归深度

有什么建议吗?

以下是代码:

def main(text, func):

    exit = False
    while not exit:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                func

            if event.key == pygame.K_DOWN:
                pygame.quit()
                quit()

    screen.fill(black)

    text = str(text)
    font = pygame.font.SysFont('georgia', 16)
    message = font.render(text, True, white)
    screen.blit(message, (screen_width / 2, screen_height / 2))

    pygame.display.flip()
    clock.tick(30)



def start():
    main("Hello, press key-up to get to start 1!", start1())


def start1():
    os.system('cls')
    main("Good, Back to start on Key-up", start())



start()

2 个答案:

答案 0 :(得分:0)

您没有将type PlainUser = { email: string } class User { email: string constructor (initialValues: PlainUser) { this.email = initialValues.email } update () { ... } } start1功能传递给start,但是甚至调用之前呼叫

main

def start(): main("Hello, press key-up to get to start 1!", start1()) def start1(): os.system('cls') main("Good, Back to start on Key-up", start()) 调用start,在评估每个例程中start1的参数时调用startmain没有机会被调用:首先发生无限的乒乓递归。

更改为:

main

并在def start(): main("Hello, press key-up to get to start 1!", start1) def start1(): os.system('cls') main("Good, Back to start on Key-up", start) 中将main替换为代码中的func,以便调用您的函数:

func()

答案 1 :(得分:0)

不要考虑跳跃,而是尝试用状态来思考。状态机是一种非常典型的游戏开发工具。

你有(至少)3种状态:“没有按下”,“按下一次”,“连续两次按下”。

将此状态存储在变量中,在按键上更新它。然后当按下 Up 时,您可以很容易地知道是否要调用start()