文本游戏:如何在类中存储命令

时间:2013-09-05 02:07:18

标签: python

我正在制作一个文本游戏(各种较小的文字游戏,直到我绝对舒服。),并且会有很多命令。例如:

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

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

4 个答案:

答案 0 :(得分:2)

module cmd经常被忽视,但听起来就像你可能需要的那样。如他们所说,batteries are included

答案 1 :(得分:2)

首先,请使用搜索功能,或至少使用Google。如果你没有证明你已经完成了公平的研究,那么不要期待帮助。

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

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/

答案 2 :(得分: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)

答案 3 :(得分: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方法,每个方法都会执行一个命令

我不知道这是不是你想要的,我希望这有帮助