我目前正在研究基于文本的RPG。这很简单,但我还有一些问题,因为我对Python很新。我希望玩家能够调用某个函数,然后在完成之后返回到之前所使用的函数。
fetch_connected_nodes(assembly, starting_node)
如上所示,我希望玩家能够从他们所在的任何特定功能中调用他们的库存。在他们调用该功能后,我希望玩家能够返回他们所在的功能。这个例子代码非常非常简单。以下是我的代码的更详细示例:
def inventory():
invent = {'a': 1, 'b':2}
print invent
def room_function():
input = raw_input("Type [i] for inventory!").lower()
if input == 'i':
inventory()
所以我的想法是将装备物品机制与库存系统结合起来。要做到这一点,我需要玩家能够调用他们的库存功能,然后从那里退出该功能并返回他们所处的任何功能。我是否正确设置了它?或者我真的离开这里,可以这么说吗?我能正确理解这些概念吗?谢谢你的帮助。
答案 0 :(得分:2)
当你调用函数时,在函数执行完毕后,它会在调用它的同一个地方返回结果。 所以,我根本没有看到任何问题 - 你问的想法是默认行为。 你遇到了什么问题?
对于RPG技师来说,OOP真的很棒。
如果您是Python新手,我强烈建议您在Coursera中尝试这些Python课程:
答案 1 :(得分:0)
我建议为所有全局命令编写一个函数并调用它而不是raw_input函数。例如:
def get_command(player_data):
while True:
command = raw_input('What would you like to do?')
if command == 'equip':
equip(player_data)
elif command == 'inventory':
inventory(player_data)
...
else
return command
然后你可以在你的房间功能中调用它而不是raw_input。如果播放器直接给出由get_command函数处理的命令,它将执行该操作,然后重复,直到它们给出get_command不知道的内容。在这种情况下,房间将获得命令并可以适当地处理它。
def room(player_data):
print "You're in a room"
command = get_command(player_data)
if command == 'leave':
print "Ok you're gone."
...
答案 2 :(得分:0)
我建议你使用'controller'函数作为总线,根据收到的输入调用函数。然后在控制器函数运行后,使用return
语句,而不返回任何内容。然后,这将程序返回到调用控制器的函数。
答案 3 :(得分:0)
正如DaneSoul所说,这是默认行为。这是完整性的一个例子。
def function1():
print 'in function 1'
def function2():
print 'in function 2'
function1()
print 'back in function 2'
function2()
# Output:
# in function 2
# in function 1
# back in function 2