C# 将对象添加到列表并合计总重量

C# 将对象添加到列表并合计总重量,c#,list,class,oop,inventory,C#,List,Class,Oop,Inventory,我对学校的任务有意见。我们必须创建一个Inventory类并用对象填充它。库存应具有最大容量。第二项任务是编写一个方法,将对象的总重量(float)相加。 我不知道如何获得库存中的物品。。请帮忙!!这是我的代码: 类别: public abstract class Item1 { //abstract BASE string label; float weight; protected Item1 (string l, float w) { label =

我对学校的任务有意见。我们必须创建一个Inventory类并用对象填充它。库存应具有最大容量。第二项任务是编写一个方法,将对象的总重量(float)相加。 我不知道如何获得库存中的物品。。请帮忙!!这是我的代码: 类别:

public abstract class Item1 { //abstract BASE
    string label;
    float weight;
    protected Item1 (string l, float w) {
        label = l;
        weight = w;
    }
    public string Label() { return label; }
    public float Weight() { return weight; }
}

public abstract class Equipment : Item1 { //abstact
    float tear;
    protected Equipment (string l, float w, float t) : base (l,w) {
        tear = t;
    }   
    public float Tear() { return tear; }
}

public abstract class Goods : Item1 { //abstact
    float uselevel;
    protected Goods (string l, float w, float ul) : base (l,w) {
        uselevel = ul;      
    }
    public float Uselevel() { return uselevel; }
}

class Sword : Equipment { //concrete
    public float damage;
    public Sword (string l, float w, float t, float d) : base (l,w,t) {
        damage = d;
    }
    public override string ToString ()
    {
        return "Item: " + Label () +" +" + damage + " damage" ;
    }
}

class Shield : Equipment { //concrete
    public float block;
    public Shield (string l, float w, float t, float b) : base (l,w,t) {
        block = b;
    }
    public override string ToString ()
    {
        return "Item: " + Label () +" +" + block + " defence" ;
    }
}

class HP : Goods { //concrete
    public float heal;
    public HP (string l, float w, float ul, float h) : base (l,w,ul) {
        heal = h;
    }
    public override string ToString ()
    {
        return "Item: " + Label () +" +" + heal + " health" ;
    }
}

class MP : Goods { //concrete
    public float mana;
        public MP (string l, float w, float ul, float m) : base (l,w,ul) {
        mana = m;
    }
        public override string ToString ()
    {
        return "Item: " + Label () +" +" + mana + " mana" ;
    }
}





Program:


public class Build : MonoBehaviour {

    void Start() {  
}

    void Update () {

        if(Input.GetKey(KeyCode.F)) {

            //Inventory.items.Add( new Sword("Lucifers Blade",12,15,2130) );
            //Inventory.items.Add( new HP("Healpotion",1,2,850) );
            //Inventory.items.Add( new MP("Manapotion",1,2,1300) );
            //Sword sword = new Sword("Lucifers Blade",12,15,1337);
            //print (sword.Label() + " weight: " + sword.Weight() + " KG - Level: "+ sword.Tear() + " DMG: " + sword.damage );

        }

        if(Input.GetKey(KeyCode.D)) {

            MP mana = new MP("Manapotion",12,15,1337);
            print ("You used: " + mana.Label() + "(Weight: " + mana.Weight() + " kg) Level: " + mana.Uselevel() + " + " + mana.mana + " Mana.");

        }
    }

}


Inventory: 

using System.Collections.Generic;

public class Inventory {
    string name;
    public static List<Item1> items;
    public Inventory(string n) {
        name = n;
        items = new List<Item1>();
    }
    public void Add(Item1 item) {
        items.Add (item);
        items.Add( new Sword("Lucifers Blade",12,15,2130) );
    }
    public void Remove(Item1 item)  {
        items.Remove (item);
    }
    public override string ToString (){
        string s = name + " contains ";
        foreach (Item1 item in items)
            s += item + ", ";
        return s;
    }

}
公共抽象类Item1{//abstract BASE
字符串标签;
浮重;
受保护项1(字符串l,浮点w){
标签=l;
重量=w;
}
公共字符串标签(){return Label;}
公共浮动权重(){返回权重;}
}
公共抽象类设备:Item1{//abstract
浮泪;
受保护设备(管柱l、浮子w、浮子t):底座(l、w){
撕裂=t;
}   
公共浮动撕裂(){返回撕裂;}
}
公共抽象类商品:Item1{//abstract
浮动使用水平;
受保护货物(l串、w浮球、ul浮球):底座(l、w){
uselevel=ul;
}
公共浮点Uselevel(){return Uselevel;}
}
等级:设备{//混凝土
公众浮标损害;
公共剑(弦l,浮子w,浮子t,浮子d):底部(弦l,浮子w,浮子t){
损伤=d;
}
公共重写字符串ToString()
{
返回“物品:”+标签()+“+”+损坏+“损坏”;
}
}
防护等级:设备{//混凝土
公众浮标积木;
公共屏蔽(串l、浮球w、浮球t、浮球b):底座(l、w、t){
block=b;
}
公共重写字符串ToString()
{
返回“项目:”+标签()+“+”+块+“防御”;
}
}
HP类:货物{//混凝土
公共交通;
公共HP(字符串l、浮点数w、浮点数ul、浮点数h):基础(字符串l、浮点数w、浮点数ul){
愈合=h;
}
公共重写字符串ToString()
{
返回“项目:”+标签()+“+”+治疗+“健康”;
}
}
MP类:货物{//混凝土
公共浮动法力;
公共MP(字符串l、浮点数w、浮点数ul、浮点数m):基础(字符串l、浮点数w、浮点数ul){
法力=m;
}
公共重写字符串ToString()
{
返回“物品:”+标签()+“+”+法力+“法力”;
}
}
节目:
公共类构建:单一行为{
void Start(){
}
无效更新(){
if(Input.GetKey(KeyCode.F)){
//增加(新剑(“路西法之剑”,12,152130));
//增加(新HP(“Healpotion”,1,2850));
//增加(新的MP(“Manapotion”,1,21300));
//剑=新剑(“路西法之剑”,12151337);
//打印(剑。标签()+“重量:”+剑。重量()+“公斤级:”+剑。撕裂()+“DMG:”+剑。伤害);
}
if(Input.GetKey(KeyCode.D)){
MP法力=新MP(“法力药剂”,12151337);
打印(“您使用:“+mana.Label()+”(重量:“+mana.Weight()+”kg)级别:“+mana.Uselevel()+”+“+”+mana.mana+”mana.);
}
}
}
库存:
使用System.Collections.Generic;
公共类目录{
字符串名;
公共静态列表项;
公共资源清册(字符串n){
name=n;
项目=新列表();
}
公共作废添加(第1项){
项目。添加(项目);
增加(新剑(“路西法之剑”,12,152130));
}
公共作废删除(第1项){
项目。移除(项目);
}
公共重写字符串ToString(){
字符串s=名称+“包含”;
foreach(项目中的项目1项目)
s+=项目+“,”;
返回s;
}
}

我不知道SO在家庭作业问题上的政策是什么,但希望这能让你回到正轨:

您必须创建库存对象,如中所示:

库存=新库存(“背包”)

然后您需要向其中添加项目:

增加(新剑(“路西法之剑”,12,152130))


(并将Lucifers Blade行从Inventory类中删除,否则每次添加其他内容时它都会添加该行)。

如果将Inventory用作静态类,则需要创建它的实例

Inventory myInventory = new Inventory("Inventory");
然后添加项目

myInventory.items.Add( new MP("Manapotion",1,2,1300) );
最后,您可以使用Linq计算权重

float weight = myInventory.items.Sum(item => item.weight);

而且,列表是静态的,这似乎很奇怪。这是有意的吗?

只要作者显示出先前研究和尝试的迹象,而不仅仅是想要填鸭式回答,就可以接受家庭作业问题。@user3000032不是问题。很高兴我能帮上忙:)但是让脚本运行的唯一方法是声明myinventory static。。我认为这是一个团结的问题