2017-05-16 10 views
-1

特定のモジュールで変更して特定のモジュールで読み込む必要がある4つの変数があります。明確にするため、これらのモジュールは「health」、「max_health」、「attack」、「gold」です。python - 異なるモジュールの変数値を変更していますか?

金は、アプリケーションの3つのレベルごとに敵が倒され、武器/武器が兵器モジュールで購入されたときに減少することを意味します。健康は敵の攻撃によって減少することを意味します病院のモジュールで修復された場合、max_healthはarmourモジュールにどのarmorが装備されているかに依存し、同じことがattackと装備されている武器に適用されます。

問題は、設定値は常に、各変数をアプリケーションの機能とともに保存しているモジュールから取得されることです。

したがって、アプリケーションが最初に起動したときに最初に各変数から値を取得する方法があるかどうか疑問に思っていましたが、アプリケーションが実行されるときに、値は上で説明したように。

ご意見は広くお寄せいただけます。

EDIT:次のように変数はなStoreDataにグローバル化と確立されている:

global max_health 
global health 
global attack 
global gold 

max_health = 100 
health = 100 
attack = 5 
gold = 0 

次のようにこれらの変数は、各モジュールにインポートされている:

from PKG.StoreData import hub_from_level1_travel, max_health, attack, gold, health 

from PKG.StoreData import health, max_health, attack, gold, hub_from_level2_travel 

from PKG.StoreData import health, max_health, attack, gold, hub_from_level3_travel 

from PKG.StoreData import hospital_heal, hub_from_hospital_travel, max_health, health, gold, attack 

from PKG.StoreData import hospital_travel, armoury_travel, level1_start, level2_start, level3_start, exit, health, max_health, attack, gold 

from PKG.StoreData import hub_from_armoury_travel, max_health, health, gold, attack 

変数の値は次のように変更されます変更はStoreDataに示されている設定値を置き換えません。代わりに、StoreDataではないモジュールが使用されているときに値がStoreDataから取得され、代わりに初期設定値が使用されます。私は、この瞬間にフィードバックが永遠に感謝するように、この問題の潜在的な修正の周りに私の頭を包むことはできません。

+0

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune

答えて

0

まず、グローバルステートメントは無意味です。これらの変数がモジュールレベルで定義されている場合、それらはすでにグローバルです。

第2に、問題を修正するには、変数ではなくモジュールをインポートする必要があります。あなたは、そのモジュール参照を経由して、それらを読んで、設定することができます - 例えばクラス

from PKG import StoreData 

StoreData.hub_from_level1_travel = 'foo' 

また、あなたは上の変数を設定するなStoreData内の別の名前空間を紹介することができます。

+0

その答えを試してみてください:NameError:name 'health'が定義されていません。私は関数がパラメータを渡すので、私の関数はこの答えの問題であると信じています。 – lg99

+0

パラメータを削除すると、特定の名前を定義できなくなります。 – lg99

+0

明らかに、StoreDataを介して属性を読み取る必要があります。 –

関連する問題