0

我正在创建一个基于文本的冒险游戏。角色正在导航由城市街区组成的地图。我有一个direction_functionraw_input然后将角色移动到正确的相邻块。然而,我有一些特殊的功能,比如在大多数街区上可以拾取物品或与之互动的人。这里我raw_input也用。如果他们输入正确的关键字,他们会进行交互,但如果他们通过输入方向忽略它们,则会将它们传递给再次direction_function提示它们的关键字。raw_input有没有办法将他们的初始答案传递给他们,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)
4

2 回答 2

1

好吧,您可以使用您的默认参数值direction_function将最终先前调用的结果传递给raw_input,例如:

def direction_function(direction=None):
    direction = direction or raw_input()
    # Do something with the input

如果没有提供方向(常规工作流程),测试最终会打电话raw_input来获取一些。如果提供了方向(例如,如果您已经阅读过,您将通过的方向),它将直接使用。

于 2012-08-30T16:31:12.457 回答
-1

是的,您只需要以某种方式定义您的函数以使其成为可能。

例如,考虑这样的事情:

def direction_function(input = 'default_val'):
    if input != 'default_val':
        input = raw_input()

    # do your stuff here

使用上述结构的函数,您可以在调用 direction_function() 方法的代码块中检查交互值或方向条件,并将调用函数的输入值传递给它。所以如果方向是玩家选择的,那么输入应该是'default_val'。

于 2012-08-30T16:33:27.437 回答