首页 > 解决方案 > C# 对象选择和操作

问题描述

我的目标是:
创建多个对象(在我的例子中是村庄)并具有一些我想经常更改的属性。


我用变量创建一个对象的当前状态是什么。

那么现在有什么问题呢?
我创建了一个可更改的名称(默认:“village00”+i)和名称为“BigBadCity”的村00(静态 ID)。

但我现在想将对象(可能是农场)的特定变量更改为 +1 级。那么如何选择要更改变量的村庄?

信息

  • 编程语言 C#
  • 我已经搜索了一个解决方案,但没有发现任何准确的
  • 用户体验
  • 不是 C# 的新手,而是 OOP 的新手

  • 我正在用 C# 编写“Tribal Wars 1”(母语中的“Die Stämme”)......如果我想要的描述很糟糕;)

    我班的代码

    namespace CS_DieStaemme
    {
        class villageObjekt
        {
            //Default constructor
            public villageObjekt()
            {
                str_villageCount = "village";//count all villages
                str_name = "village";   //default name
                sho_points = 0;         //Start points
                byt_cord_X = 0;         //default cords x (need to change later)
                byt_cord_Y = 0;         //default cords y (need to change later)
    
                sho_wood = 0;
                sho_clay = 0;
                sho_iron = 0;
    
                byte_mainBuilding = 1;
                byte_storage = 1;
                byte_farm = 1;
                byte_church = 0;
                byte_casern = 0;
                byte_stable = 0;
                byte_workshop = 0;
                byte_statue = 0;
                byte_market = 0;
    
            }
    
            //Default constructor
            public villageObjekt(
                           byte village_byt_villageCount,//village count
                           byte village_byt_cord_X,    //Village cord x    (ex. 245)
                           byte village_byt_cord_Y     /*Village cord y    (ex. 632)*/)
            {
                str_villageCount += village_byt_villageCount; //count up village
                byt_cord_X = village_byt_cord_X; //set cords
                byt_cord_Y = village_byt_cord_Y; // set cods
            }
    
            //Member variables
            public string str_villageCount;
            public string str_name;    //Village name      (ex. village012)
            public short sho_points;   //Village points    (ex. 567pt)
            private byte byt_cord_X;    //Village cord x    (ex. 245)
            private byte byt_cord_Y;    //Village cord y    (ex. 632)
    
            //Production variables
            public short sho_wood;
            public short sho_clay;
            public short sho_iron;
    
            //Buildings variables
            public byte byte_mainBuilding;
            public byte byte_storage = 1;
            public byte byte_farm = 1;
            public byte byte_church = 0;
            public byte byte_casern = 0;
            public byte byte_stable = 0;
            public byte byte_workshop = 0;
            public byte byte_statue = 0;
            public byte byte_market = 0;
    
        }
    }
    
  • 标签: c#oop

    解决方案


    您可以将所有村庄存储在列表中var villages = new List<villageObjekt>();,然后选择并编辑您想要的村庄:

    var villageName = "<Insert the name of the village you want to edit>";
    var villageToEdit = villages.First(v => v.str_name == villageName);
    //edit the village
    villageToEdit.byte_farm++; //farm level-up
    villageToEdit. ...
    

    使用此列表,您必须将一个村庄添加到列表中,villages.Add(village);或者在该列表中创建一个村庄 villages.Add(new villageObjekt());


    推荐阅读