我有一个全局变量,需要通过函数生成的用户输入进行更改。
我正在尝试制作一个 Zork风格的文字游戏,并希望用户在角色创建input
期间将角色名称function
更改为全局变量。
我已经能够创建class
来存储字符信息,并且能够在class
出现的模拟命令提示符下在input
中显示大多数信息。选项对用户可用。
我使用global variable
定义角色的名称,直到角色创建阶段为止。我在global
creation()
中使用'function
'关键字来与用户variable
一起更改'名称'input
。
准备好使用提示时,它仍然仅将名称显示为00
,而不是在input
{{1}期间生成的creation()
}
我是新手。任何建议,技巧或方向都将得到珍惜。
function
答案 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 >>>