他のRPGと同じように、アイテムの単純な「インベントリ」を作成しようとしています. プロパティを持つ非常に基本的なクラスを作成しました。
とにかく、私は の基本クラスを持っており、item
それを継承していweapon
ます。には、 内でitem
も使用されるプロパティ (名前、値、重量、「重要なアイテム」) がありますが、追加のプロパティ (攻撃、防御、速度、利き手) があります。weapon
weapon
私は次のコードを持っています(読みやすさがひどい場合は申し訳ありません):
static void Main(string[] args)
{
List<item> inventory = new List<item>();
inventory.Add(new weapon("Souleater", 4000, 25.50f, false, 75, 30, 1.25f, 2));
//item---------------------------> weapon--------->
Console.Write("Name: {0}\nValue: {1}\nWeight: {2}\nDiscardable: {3}\nAttack: {4}\nDefense: {5}\nSpeed: {6}\nHandedness: {7}",
inventory[0].Name, inventory[0].BValue, inventory[0].Weight, inventory[0].Discard,
inventory[0].Atk, inventory[0].Def, inventory[0].Speed, inventory[0].Hands);
Console.ReadLine();
}
基本的に私がやろうとしているweapon
のはインベントリに新しいものを追加することですが、インベントリはList<item>
タイプです。継承なので、受け入れられることを期待して気まぐれに出かけました。それはありましたが、に固有のプロパティにweapon
はアクセスできません:
(「shopSystem.item」には「Atk」の定義が含まれておらず、タイプ「shopSystem.item」の最初の引数を受け入れる拡張メソッド「Atk」が見つかりませんでした)
それで、私がここで意図していたことを達成する方法はありますか? から継承した、などのオブジェクトitem
だけでなく、オブジェクトを格納できる「インベントリ」があります。次のように宣言すると、必要なすべてのプロパティにアクセスできることにも言及する価値があります。weapon
armour
accessory
item
weapon Foo = new weapon("Sword", 200, 20.00f, false, 30, 20, 1.10f, 1);
読んでくれてありがとう。
誰かが興味を持っているなら、ここにitem
andクラスがあります:weapon
class item
{
#region Region: Item Attributes
protected string name = "";
protected int baseValue = 0;
protected float weight = 0.00f;
protected bool noDiscard = false;
#endregion
public item(string n, int v, float w, bool nd){
name = n; baseValue = v; weight = w; noDiscard = nd;}
public string Name{
get{return name;}
set{if(value != ""){
name = value;}
}//end set
}
public int BValue{
get{return baseValue;}
}
public float Weight{
get{return weight;}
}
public bool Discard{
get{return noDiscard;}
}
}
class weapon : item
{
#region Region: Weapon Attributes
private int atk = 0;
private int def = 0;
private float speed = 0.00f;
private byte hands = 0;
#endregion
public weapon(string n, int v, float w, bool nd, int a, int d, float s, byte h) : base(n, v, w, nd){
atk = a; def =d; speed = s; hands = h;}
public int Atk{
get{return atk;}
}
public int Def{
get{return def;}
}
public float Speed{
get{return speed;}
}
public byte Hands{
get{return hands;}
}
}