我正在创建一个基于文本的冒险游戏。角色正在导航由城市街区组成的地图。我有direction_function
取raw_input
然后将字符移动到正确的相邻块。但是,我有一些特殊的功能,比如要拾取的项目或大多数块上的人们进行交互。在这里我也使用raw_input
。如果他们输入正确的关键字,他们会互动,但如果他们通过输入方向忽略它们,则会将其传递到direction_function
,再次提示他们raw_input
。有没有办法将他们的初始答案传递给direction_function
,这样他们就不必重复他们的答案了?
这是我的direction_function:
def direction_function(left, right, up, down, re):
direc = raw_input(">")
if direc in west:
left()
elif direc in east:
right()
elif direc in north:
up()
elif direc in south:
down()
elif direc in inventory_list:
inventory_check()
re()
else:
print "try again"
re()
我为每个块指定一个函数,如下所示
def block3_0():
print "You see a bike lying in your neighbor's yard. Not much else of interest."
direc = raw_input(">")
if direc in ("take bike", "steal bike", "ride bike", "borrow bike", "use bike"):
print "\n"
bike.remove("bike")
school_route()
else:
direction_function(block2_0, block4_0, block3_1, block3_0, block3_0)
答案 0 :(得分:1)
好吧,您可以使用direction_function
上的默认参数值将最后一次调用的结果传递给raw_input
,例如:
def direction_function(direction=None):
direction = direction or raw_input()
# Do something with the input
如果没有提供方向(常规工作流程),测试将最终调用raw_input
来获取一些。如果提供了一个方向(如果您已经阅读了该方向,那么将直接使用它)。
答案 1 :(得分:-1)
是的,您只需要以这样的方式定义您的功能即可。
例如,考虑这样的事情:
def direction_function(input = 'default_val'):
if input != 'default_val':
input = raw_input()
# do your stuff here
使用如上所述构建的函数,您可以检查代码块中的交互值或方向条件,您可以在其中调用direction_function()方法,并将调用函数所在的输入值传递给它。因此,如果方向是玩家选择的方向,则输入应为'default_val'。