【发布时间】:2017-08-27 13:05:14
【问题描述】:
我正在创建一个 Hacking Sim 游戏。
在我的游戏中,我正在尝试实现 BASH 脚本供玩家使用。
请注意:
- 玩家可以与其他玩家共享脚本
- 所有“BASH”命令都是自定义的,由我的游戏处理
- 命令当前由 argparse 处理
- 此游戏适用于 Windows,使用 Python2.7 编写
这是我如何处理命令的示例:
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)。 (是的,我知道“eval is badddd”,但实际上我试图利用该过程并没有想出任何结果。)从游戏内终端发送的命令以相同的方式解析。
但是,我需要知道如何处理if/else/for/etc..
如何在我当前的代码中实现这一点?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
@Bhargav 一些 cmets(特别是最后几个)与帖子相关。
-
是的,他们都在这里存档chat.stackoverflow.com/transcript/139708
标签: python windows python-2.7 argparse