0

私はC#を学んでいて、ゲームを作ろうとしていますが、問題があります。私が呼び出す2つのクラスがItemありWeaponWeapon次のようになります。

class Weapon : Item
{ 
    int damage; 
    int durability;

    public void asd()
    {
        Weapon shortSword = new Weapon();
        shortSword.dmg = 5;
        shortSword.durability = 20;
        Weapon woodenBow = new Weapon();
        woodenBow.dmg = 3;
        woodenBow.durability = 15;
    }
 }

次に、さまざまなメソッドを含む別のクラスがあります。そのうちの1つは、プレーヤーがアイテムを歩くときに呼び出され、そのアイテムをランダム化することになっています。Weaponしかし、私はこの他のクラスからのオブジェクトに到達することはできません。どうすればそれらに到達できますか、またはこの問題を解決できますか?

4

1 に答える 1

5

デザインに問題があります。Weapon武器を作成するメソッドは、クラスのインスタンスメソッドであってはなりません。それはおそらく静的メソッドである可能性があり、あるいは他のクラスのメソッドである可能性もあります。

メソッドは、武器をコレクション内またはとして返す必要がありIEnumerableます。

public class Weapon : Item
{
    public int Damage { get; set; }
    public int Durability { get; set; }

    // Consider moving this method to another class.
    public static IEnumerable<Weapon> CreateWeapons()
    {
        List<Weapon> weapons = new List<Weapon>();

        Weapon shortSword = new Weapon { Damage = 5, Durability = 20 };
        weapons.Add(shortSword);

        Weapon woodenBow = new Weapon { Damage = 3, Durability = 15 };
        weapons.Add(woodenBow);

        return weapons;
    }
}

また、オブジェクト初期化構文を使用してコードをより簡潔にし、メソッド/プロパティの命名の一部を整理しました。

于 2012-09-09T13:45:12.377 に答える