0

我正在学习 C#,我正在尝试制作游戏,但遇到了问题。我有两个类,我称之为Itemand 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;
    }
 }

然后我有另一个包含不同方法的类,其中一个在玩家走在一个项目上时被调用,并且它应该随机化该项目。但是我无法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 回答