如何使用通过函数获得的用户输入来更改全局变量?

时间:2019-05-25 03:07:43

标签: python python-3.x function global-variables mud

我有一个全局变量,需要通过函数生成的用户输入进行更改。

我正在尝试制作一个 Zork风格的文字游戏,并希望用户在角色创建input期间将角色名称function更改为全局变量

我已经能够创建class来存储字符信息,并且能够在class出现的模拟命令提示符下在input中显示大多数信息。选项对用户可用。

我使用global variable定义角色的名称,直到角色创建阶段为止。我在global creation()中使用'function'关键字来与用户variable一起更改'名称'input

准备好使用提示时,它仍然仅将名称显示为00 ,而不是在input {{1}期间生成的creation() }

我是新手。任何建议,技巧或方向都将得到珍惜。

function

2 个答案:

答案 0 :(得分:0)

啊,花了一点时间,但我想我发现了问题。

您可以在调用Creation()之前使用name变量来初始化Player 1,在此您更改全局name变量,因此将使用原始名称“ 00”创建Player1。

移动行:

Player1 = Character(name, 100, 100, 1, 0)

将其放在底部Creation()之后但segway()之前

Python或多或少从上至下执行所有未缩进的代码(不在函数,类等中的代码)。

因此,在程序中从上到下移动,将名称设置为“ 00”,然后使用原始名称创建Player1,然后调用Intro()Creation()(将名称更改为t00n ),最后是segway()

答案 1 :(得分:0)

您需要在prompt中使用global关键字,并使用该全局名称更新Player1.name

def prompt():

    #Take name from global scope
    global name

    #Assign it to Player1 name
    Player1.name = name

    _pr = input("<<< " + Character.stat_bar(Player1) + " >>> \n")
    return _pr

然后您的提示将按预期工作,例如

Welcome to the game.
This is an attempt to make an interactive text based game.

What will your Character's name be: Joe

Welcome to the game Joe 

In one word, name Joe's profession: Don

Joe the Don

When ready type 'next' to begin.
>>>:next
A room with options to choose from
<<< [Name:] Joe the Don [HP:] 100 [Max HP:] 100 >>>