我正在创建一个Hacking Sim游戏。
在我的游戏中,我正在尝试为玩家使用BASH脚本。
请注意:
以下是我处理命令的示例:
class Console():
def do_echo(self, args):
cmd_echo = argparse.ArgumentParser(description="Prints out whatever you pass it", prog='echo')
cmd_echo.add_argument("text", metavar=("<text>"), help="The text to echo (\"in quotes\")", default=None)
# Processes the command - Capture '--help' or argument errors (e.g: Typos)
try: arg = cmd_echo.parse_args(args)
except SystemExit: return # Voids the SystemExit that argparse calls, while allowing other errors
print arg.text
def run(command)
sys_args = shlex.split(command)
if 'do_'+sys_args[0].lower() in dir(Console):
function = sys_args[0] ; sys_args.pop(0)
fn = 'Console().do_%s(%s)' % (function,sys_args)
eval(fn)
处理脚本(.sh)时我只使用for line in f.readlines(): run(line)
。 (是的,我知道&#34; eval是badddd&#34;但我实际上已经尝试利用这个过程并且没有任何结果。)从游戏终端发送的命令以相同的方式解析。
但是,我需要知道如何处理if/else/for/etc..
如何在我当前的代码中实现这一点?
答案 0 :(得分:0)
最终,如果您需要用户可编程脚本,则需要进行某种解释和执行。此外,根据安全性对您的重要程度,您必须考虑这些脚本执行的上下文以及它们可以执行的操作。
我强烈建议您从以下内容开始:http://norvig.com/lispy.html。这是在python之上实现解释语言的一个非常简单的例子。祝你好运!