行47:
def roomBA(key, life, door_open, roomBA, roomDA):
ここではroomBAという名前の関数を定義しています。
ライン129:ここで
roomBA = 0
、あなたは今、数0にルンバを変更しました。
したがって、定義した元の機能は失われます。あなたはもはやそれを呼び出すために使用する名前を持っていません。ライン132上の
:
ここ
roomCA(key, life, door_open, roomBA, roomDA)
、あなたは、関数roomCAを呼んでいます。とりわけ、この関数はプレーヤーからの指示を求めてから、対応するルーム関数を呼び出そうとします。
私は西側を入力したので、変数roomBA(行17)によって参照される関数を呼び出そうとしました。しかし、ああ、それはもはや機能ではありません。それは0なので、あなたは間違いです。
何が起こっているかは、関数名と変数名の間に多くの衝突があることです。もちろん、roomXXはゲーム内の各部屋を表す関数です。次に、あなたは状態変数を持っています(これは今のところroomXXとも呼ばれています)。これらの変数は、前に部屋に入ったかどうかを追跡するためのものです。あなたの関数と状態変数の両方が同じものに命名されているので、あなたはあらゆる種類の予期しないことをしています。
上記のように、コード129と130を削除してコードを実行させることができます。しかし、おそらく基礎のより良い理解を得る必要があります。ここで開始する場所です:エラーは言っ
http://en.wikipedia.org/wiki/Scope_%28computer_science%29
質問の本文に関連コードを入力してください。 –
また、デザインのオーバーホールに時間を費やしたいこともあります。各部屋、動き、敵のそれぞれの「カラフルな説明」をハードコードすることで、コードを再利用することはできません。また、コードを維持するための生きた地獄となり、また読みにくくなります。 – hexparrot
Pythonは初めて使ったプログラミング言語ではありませんか? –