首页 > 解决方案 > 如何从 Python 3 中的循环函数返回

问题描述

我正在开发一款 RPG 风格的游戏,目前正在开发库存。我没有使用任何引擎,例如 PyGame,而是使用键盘、操作系统和时间。物品栏的工作方式是它对光标所在的每个地方都有不同的功能,如果你按向上和向下箭头键,它将运行与它所在的地方相对应的功能,这样光标就会变成那里。请注意,这是为 Windows 10 编写的。

import time
import os
import keyboard
def screenclear():
    os.system('cls')
def inventory():
    def menu():
        def weaponschoice():
            global choice
            global realchoice
            choice = 'weapons'
            screenclear()
            print('    >WEAPONS<')
            print('     ARMOUR')
            print('     ITEMS')
            print('     BACK')
            time.sleep(0.1)
            while True:
                if keyboard.is_pressed('up'):
                    backchoice()
                if keyboard.is_pressed('down'):
                    armourchoice()
                elif keyboard.is_pressed('z'):
                    realchoice = choice
                elif keyboard.is_pressed('x'):
                    realchoice = 'back'
        def armourchoice():
            global choice
            global realchoice
            choice = 'armour'
            screenclear()
            print('     WEAPONS')
            print('    >ARMOUR<')
            print('     ITEMS')
            print('     BACK')
            time.sleep(0.1)
            while True:
                if keyboard.is_pressed('up'):
                    weaponschoice()
                if keyboard.is_pressed('down'):
                    itemschoice()
                elif keyboard.is_pressed('z'):
                    realchoice = choice
                elif keyboard.is_pressed('x'):
                    realchoice = 'back'
        def itemschoice():
            global choice
            global realchoice
            choice = 'items'
            screenclear()
            print('     WEAPONS')
            print('     ARMOUR')
            print('    >ITEMS<')
            print('     BACK')
            time.sleep(0.1)
            while True:
                if keyboard.is_pressed('up'):
                    armourchoice()
                if keyboard.is_pressed('down'):
                    backchoice()
                elif keyboard.is_pressed('z'):
                    realchoice = choice
                elif keyboard.is_pressed('x'):
                    realchoice = 'back'
        def backchoice():
            global choice
            global realchoice
            choice = 'back'
            screenclear()
            print('     WEAPONS')
            print('     ARMOUR')
            print('     ITEMS')
            print('    >BACK<')
            time.sleep(0.1)
            while True:
                if keyboard.is_pressed('up'):
                    itemschoice()
                if keyboard.is_pressed('down'):
                    weaponschoice()
                elif keyboard.is_pressed('z'):
                    realchoice = choice
                elif keyboard.is_pressed('x'):
                    realchoice = 'back'
        weaponschoice()
        exec(realchoice + '()')

将来我将添加诸如weapons()armour()items()和之类的函数back(),但我意识到我必须从随机数量的重复函数中返回。我怎么做?

标签: pythonpygame

解决方案


您应该添加一个基本条件以在满足条件时停止函数......或者您可以通过调用内置模块(sys.setrecursionlimit(5)来设置递归限制。)


推荐阅读