我在使用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()
答案 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
的参数时调用start
。 main
没有机会被调用:首先发生无限的乒乓递归。
更改为:
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()
。