我正在編寫一個可以與經典的DnD地牢爬行相比較的遊戲代碼。我已經定義了包含一個角色的統計和庫存的幾個字典。他們是這樣的:如何讓一個函數使用之前在Python中的另一個函數中定義的變量?
enemy_mid = {'hp': 100,
'ag': 50,
'sp': 60,
'st': 70,
'wep': sword,
'arm': leather,
'sld': buckler}
目前,對於敵人,玩家可以面對的不同的難度級別一個詞典的球員,和3。現在,當戰鬥開始時,函數'assign_attacker()'被調用以決定玩家將面對的敵人。該功能看起來是這樣的:這個函數被調用
def assign_attacker():
attacker = character
enemy_choice = input("Would you prefer your enemnt to be easy, medium or hard, in terms of difficulty? (easy/med/hard): ").lower()
if enemy_choice == "easy":
defender = enemy_easy
elif enemy_choice == "med":
defender = enemy_med
elif enemy_choice == "hard":
defender = enemy_hard
else:
print("invalid")
後,程序將需要對誰掌握着主動權決定。它應該這樣做使用以下功能:
def initiative():
if attacker['sp'] > defender['sp']:
init = "att"
elif attacker['sp'] == defender['sp']:
init = "null"
else:
init = "def"
print(init)
然而,當這個函數被調用,一個錯誤出現說,「攻擊者」沒有定義。我明白'攻擊者'是一個局部變量,不能在其他函數之外調用,但我不知道確保這個變量可以在任何地方被調用的最好方法是什麼。我聽說使用'global'是非常糟糕的做法,因爲這個變量會在我的代碼中被使用很久,所以我想知道定義這個變量的最好方法是什麼。這當然也適用於'防守'變量。
它看起來像'character'是腳本中的全局變量。爲什麼不在''initiative()'函數的頂部添加'attacker = character'呢? – elethan
對不起,我沒有提到這個,但它也適用於'defender'變量。 – Alchrops