首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#如何修改List<class>

C#如何修改List<class>
EN

Stack Overflow用户
提问于 2011-09-02 21:02:25
回答 3查看 141关注 0票数 0

我正在制作一个控制台RPG,并且是泛型的新手。我的问题是我想要一个英雄(存储在一个通用的英雄列表中)去攻击一个怪物(存储在一个通用的敌人列表中)。我的问题是让英雄从我的怪物类属中选择一个目标,然后修改怪物的hpcurrent。对于一个怪物和英雄来说,这很容易,但是当我扩展游戏时,我打算有几种类型的怪物和英雄;因此,我想为我的英雄使用一段代码,它可以从泛型中挑选一项并修改它的统计信息。之所以有两个泛型,是因为它让我更容易看到是否所有的英雄或怪物都死了。

我将发布怪物的代码(它与英雄的代码相同,只是数字不同):

代码语言:javascript
复制
class Orc : Character
{
    public Orc()
    {
        this.hpcurrent = 12;
        this.hpmax = 12;
        this.mpcurrent = 0;
        this.mpmax = 0;
        this.strength = 6;
        this.defense = 4;
        this.magicstrength = 0;
        this.magicdefense = 2;
        this.agility = 4;
        this.level = 3;
        this.isaliveBool = true;
        this.name = "Orc";
        this.weakness1 = "fire";
        this.weakness2 = "thunder";
        this.battlemove = null;
        this.typeofcharacter = "monster";
    }

monster列表的代码是:

代码语言:javascript
复制
public List<Character> enemies()
    {
        List<Character> enemies = new List<Character>();
        enemies.Clear();
        enemies.Add(new Orc());
        return enemies;
    }
EN

回答 3

Stack Overflow用户

发布于 2011-09-02 21:06:54

您可以使用类似以下内容:

代码语言:javascript
复制
public List<Character> Enemies
{ 
   if (_Enemies == null)
   {
      _Enemies = new List<Character>(); 
      _Enemies.Clear(); 
      _Enemies.Add(new Orc()); 
   }
   return _Enemies; 
} 
private List<Character> _Enemies;

然后你可以像这样使用:

代码语言:javascript
复制
obj.Enemies[0].HP += 25;
票数 0
EN

Stack Overflow用户

发布于 2011-09-02 21:07:33

您需要向Character类添加一个标识符属性,以便识别特定的敌人对象并对其执行一些操作。Guid类可以很好地实现这一目的。

票数 0
EN

Stack Overflow用户

发布于 2011-09-02 23:57:41

我真的不确定你想要实现什么,但是类是C#中的引用类型。这意味着如果您在集合外部修改相同的敌方对象,该更改也会反映在集合内部。不清楚的是你打算如何使用它。哪个对象拥有你的敌人列表?你是如何从列表中找到某个敌人的?一旦你从列表中找到你想要的敌人,更新就变得微不足道了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7283811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档