現在、私はPythonを試していて、ちょっとしたテキストアドベンチャーをプログラミングしています。私のゲームでは、プレイヤーは魔法使い、攻撃ダメージ、アイテムの在庫スロットなどの特定のプロパティを持っています。 私のコードでこれらのプロパティをどこからでも呼び出せるようにしたいと思います。そのために私は三つの値を受け取る機能を作成しました:Pythonで値を保存して返す関数をプログラミングする
「編集」:変数が
「info_id」を編集する必要があるかどうかを指定するには:アクセスする必要のある変数を指定する
「値」:変数
これの新しい値は、それが私のコードで次のようになります。
def player_info(edit, info_id, value):
if edit == 1:
##function wants to edit value
if info_id == 1:
player_hp = value
print ("Assigned hp to: ", player_hp)
##the "prints" are just to check if the asignments work -> they do
return player_hp
elif info_id == 2:
player_attack = value
print ("Assigned attack to: ", player_attack)
return player_attack
elif info_id == 3:
item_1 = value
return item_1
elif info_id == 4:
item_2 = value
return item_2
elif info_id == 5:
item_3 = value
elif edit == 0:
##function wants to retrieve value
if info_id == 1:
return player_hp
elif info_id == 2:
return player_attack
elif info_id == 3:
return item_1
elif info_id == 4:
return item_2
elif info_id == 5:
return item_3
は(info_iまで行く10個のアイテムスロットが実際にあります。 d == 13)しかし、彼らはとにかく同じです。
私は私のコードの先頭にすべての変数を定義:定義作品
player_info(1,1,20)
player_info(1,2,5)
n=3
while n<=13:
player_info(1,n,0)
n=n+1
##items are not fully implemented yet so I define the item slots as 0
を、私はので、私はコードで実装制御「印刷」を伝えることができます。それでも変数を呼び出すとこのような健康:
player_info(0,1,0)
私はエラーを取得する:
local variable 'player_hp' referenced before assignment
機能が正しく変数を保存しませんか?それとも何が問題なの?
変数を保存するより良い方法はありますか?グローバル変数はこの場合に行く方法ですか?
ありがとうございました!
コードをフォーマットしてください。インデントが混乱です –
あなたの関数は 'player_hp'という名前のローカル変数を作成していますが、同じ名前のグローバル変数は変更されません。関数がグローバルを変更できるようにするには 'global'キーワードを使用することができますが、Playerクラスを作成し、そのクラスのインスタンスを使用してプレーヤー情報を格納する方がよいでしょう。 –