2015-05-27 24 views
-1

我正在用Python创建一个基于文本的冒险游戏。在某些情况下,您可以执行许多不同操作的房间,例如打开胸部。我想创建一个单一的功能,允许这一点,因为现在我必须写这一切: (只是一个例子)如何创建一个允许用户输入根据在Python中输入相同输入的次数有不同结果的函数?

hello_said_once = True 

hello = ["hello", "hi"] 
goodbye = ["goodbye", "bye", "cya"] 

while True: 

    user_input = raw_input("Hello... ") 

    if any(i in user_input for i in hello) and hello_said_once: 
     print "You said hello!" 
    elif any(i in user_input for i in hello) and not hello_said_once: 
     print "You already said Hello!" 
    elif any(i in user_input for i in goodbye) and good_bye_said_once: 
     print "You said Goodbye!" 
     break 

这一段时间后变得无聊,我不知道如何使一个功能,特别是因为您可以执行的操作量取决于情况。

+2

怎么样一个字典索引的单词,并包含使用次数? – dlask

+0

@dlask这是个好主意。我将如何根据可能的操作数量来改变功能? – conyare

回答

1

如果您想保持功能和使用次数密切相关,那么使用class值得使用。一个类可以拥有持久性数据,因此您可以通过每次只增加数字来跟踪用户调用它的次数。

class chest(): 
    openCount = 0 
    openFunctions = [ 
         function1, 
         function2, 
         function3, 
         ... 
        ] 

    def use(self): 
     self.openFunctions[openCount] 
     self.openCount += 1 

你也可以用它来跟踪其他更动态的数据,就像从箱子里收到的物品清单一样。

1

你或许可以创建一个类,该类包含有效输入的列表以及布尔值是否已被触发。

class Action: 
    def __init__(self, user_inputs): 
     self.user_inputs = user_inputs 
     self.been_triggered = False 

hello = Action(["hello", "hi"]) 
goodbye = Action(["goodbye", "bye", "cya"]) 

另外,您对“any”的使用是多余的。你可以说if user_input in hello and ...

class Action: 
    def __init__(self, user_inputs): 
     self.user_inputs = user_inputs 
     self.been_triggered = False 

hello = Action(["hello", "hi"]) 
goodbye = Action(["goodbye", "bye", "cya"]) 

while True: 

    user_input = raw_input("Hello... ") 

    if user_input in hello.user_inputs: 
     if not hello.been_triggered: 
      print "You said hello!" 
     else: 
      print "You already said Hello!" 

    elif user_input in goodbye.user_inputs: 
     print "You said Goodbye!" 
     break 
+0

这会更有效率,例如'self.user_inputs = set(user_inputs)' – jonrsharpe

+0

任何允许用户输入一个完整的句子不是吗? – conyare

+0

@conyare是的,但是你怎么处理''再见,再见''? – jonrsharpe

相关问题