あなたは、コストが付いているユニットを訓練でき、そのユニットの一定量を訓練するための総コストを計算できるようにしたいと考えています。ゲームユニットの属性(コスト)を保存する適切な方法は何ですか?
ユニットはすべて同じ属性を共有しますが、前記属性の値は異なる単位で変化します。
私は辞書を使用して2つの潜在的な解決策、発見した:ような何かをやっている場合ので、私は疑問に思い
swordsmen['gold'] * 1200
:
spearmen = {'gold' : 2, 'wood' : 10, 'stone' : 5, 'iron' : 0}
swordsmen = {'gold' : 5, 'wood' : 30, 'stone': 0, 'iron' : 10}
をしかし、私は少し冗長にするための情報にアクセスするための方法を見つけますこれは適切です:
class Spearmen:
gold = 2
wood = 10
stone = 5
iron = 0
class Swordsmen
gold = 5
wood = 30
stone = 0
iron = 10
クラスを使用すると、冗長ね:
Spearmen.gold * 1200
アンチパターンとみなされていない私は何をしようとしているよりも頻繁にあることを示唆している私はthis questionを発見したいくつかのぞんざいな研究を、行います。だから私はこの解決策についてもわからない。
プログラムの進化について考えると、ユニットに新しい属性を追加する必要はほとんどありませんが、新しいユニット(同じ属性のユニット)を追加する必要がありそうですが、 。
これらの解決策のいずれかが適切か、それを行うためのより良い方法があるのか、なぜ間違っているのだろうかと思います。
木材 '、私は意見をベースとして閉じるように投票していますが、私の意見はあなたが' Unit'というクラスを作成する必要があること、例えば、それは 'gold'を取る' __init__'メソッドを定義しています'、' 'stone''、' 'iron''をパラメータとして、インスタンスの属性として設定します。あなたは 'spearmen = Unit(5、30、0、10)'と言うことができ、 'spearman.gold * 1200'を使うことができます。 1つのクラスだけを使用しているので、新しい種類のユニットごとに新しいクラスを定義する必要はありません。 – zondo
オピニオンベースまたはプログラマーサイト(他のSEサイトのダイアログでは選択できません...) – bish
初心者であると私は推測しました。解決策ですが、これは意見のことと思われるので質問を終了してください、お時間をありがとうございます。 – McBain