私は古典的な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)
ただし、この関数を呼び出すと、「攻撃者」が定義されていないというエラーが表示されます。私は、「攻撃者」はローカル変数であり、他の関数の外部では呼び出すことができないことを理解していますが、この変数をどこでも呼び出せるようにする最良の方法はわかりません。私は、 'グローバル'を使用することは非常に悪い習慣であり、この変数は後ほど自分のコードで多く使用されると聞いて、この変数を定義する最良の方法が何であるかを知りたいと思っていました。もちろん、これは「防御側」変数にも当てはまります。
'character'はあなたのスクリプトのグローバル変数です。あなたの 'initiative()'関数の先頭に 'attacker = character'を含めないのはなぜですか? – elethan
申し訳ありませんが、私はこれについて言及していませんでしたが、それは 'defender'変数にも当てはまります。 – Alchrops