这是针对硬件作业的,所以应该不是很困难。无论如何,我们应该创建一个武器的基类,然后创建近战武器、法术、射弹的子类,每个类都有额外的武器属性。这部分并不难。我遇到了以下问题:
"创建一个表示具有名称和武器的玩家的类"
我可以管理创建玩家职业,但我不确定如何解释武器。
我有三种不同的玩家职业,例如公共职业玩家:法术:武器或公共职业玩家:近战武器:武器?我觉得应该有一种方法可以有一个玩家职业,但我对如何做到这一点感到慌乱。玩家类还需要一个构造函数;同样,这并不难,但我不知道如何解释武器类型的选择,除非我有多个玩家类别。
基本上,似乎我想有一个大子类(玩家)->三个可能的子类(近战武器,法术,射弹)->一个父类(武器),但我在这里混淆了自己。
你完全误读了要求。 仔细看看:
这并不是说玩家创建一个表示具有名称和武器的玩家的类
是一个名字和武器,而是说一个玩家有一个名字和一个武器。
Player
类应具有两个属性:Name
和 Weapon
。 这与继承无关。
你很困惑。退后一步,按照说明操作:
创建一个表示玩家的类...
public class Player {}
。用名字...
public class Player
{
public string Name { get; set; }
}
。和武器。
public class Player
{
public string Name { get; set; }
public Weapon EquippedWeapon { get; set; }
}
您现在可以创建具有不同武器的不同玩家:
var alice = new Player { Name = "Alice", EquippedWeapon = new MeleeWeapon() };
var bob = new Player { Name = "Bob", EquippedWeapon = new Spell() };
该任务要求您在玩家和武器之间使用has-a关系,而不是is-a
所以在你的播放器类中,你将有
class Player
{
public string Name {get; protected set;}
public Weapon CurrentWeapon {get; protected set;}
}