2

我正在做一个文字游戏(各种较小的文字游戏,直到我完全舒服为止。),并且会有很多命令。例如:

如果玩家在“积分”屏幕中。如果有一个中央命令,例如“帮助”。我如何让命令“帮助”列出所有可用命令?

我要问的是,如何将所有自定义命令存储在一个类中,然后调用它们?或者甚至有可能吗?

4

4 回答 4

2

模块 cmd经常被忽略,但听起来正是您可能需要的。正如他们所说,电池包括在内的。

于 2013-09-05T02:17:53.153 回答
2

首先,请使用搜索功能,或至少谷歌。如果您没有证明您已经完成了应有的研究,请不要指望帮助。

也就是说,这是一个让您入门的示例。您可以编写一个函数来接受来自键盘的输入并使用条件语句来输出正确的信息:

class MyClass():

    def menu(self):
        strcmd = raw_input('Enter your input:')
        if strcmd == "help":
            self.help_func()
        elif strcmd == "exit":
            sys.exit(0);
        else:
            print("Unknown command")

    def help_func(self):
        print("Type 'help' for help.")
        print("Type 'exit' to quit the application.")

    # ...

如果您想花哨,可以将函数指针存储在字典中并完全避免条件:

class MyClass():

    def __init__(self):
        self.cmds = {"help": help_func, "info": info_func}

    def menu(self):
        strcmd = raw_input('Enter your input:')

        if strcmd in self.cmds:
            self.cmds[strcmd]() # can even add extra parameters if you wish
        else:
            print("Unknown command")

    def help_func(self):
        print("Type 'help' for help.")
        print("Type 'exit' to quit the application.")

    def info_func(self):
        print("info_func!")

对于那些对 Python 有一般了解的人来说,基于文本的菜单是轻而易举的事。您将不得不自己弄清楚如何正确实现输入和控制流。这是 Google 上的顶级结果之一:

http://www.cyberciti.biz/faq/python-raw_input-examples/

于 2013-09-05T02:26:41.013 回答
1

可能首先要记住的最好的事情是函数是 python 中的一等对象。

因此,您可以学习如何使用 dict 将字符串(帮助主题)映射到函数(可能会以某种方式显示您想要的内容)。

available_commands = {"Credits": [ helpcmd1, helpcmd2, ...],
                      # ... other screens and their command help functions
                     } 
if current_screen in available_commands.keys (): 
  for command in available_commands [current_screen]:
    command ()
else:
  displayNoHelpFor (current_screen)
于 2013-09-05T02:26:41.763 回答
0

好吧,您可以在类中为每个命令创建方法

例如:

class Credits():
    def __init(self):
        print "for command 1 press 1:"
        print "for command 2 press 2:"
        print "for command 3 press 3:"
        print "for command 4 press 4:"
        choice = raw_input("")

        if choice == "1":
            self.command1()
        elif choice == "2":
            self.command2()
        elif choice == "3":
            self.command3()
        else:
            self.command4()

    def command1(self):
        #do stuff

    def command2(self):
        #do stuff

    def command3(self):
        #do stuff

    def command4(self):
        #do stuff

那么每个选择都会做一个不同的nop方法,每个方法都会做一个命令

我不知道这是否正是你想要的但我希望这会有所帮助

于 2013-09-05T02:14:44.207 回答