首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我说对了吗?(数组、枚举。结构)

我说对了吗?(数组、枚举。结构)
EN

Stack Overflow用户
提问于 2011-11-23 12:39:39
回答 3查看 620关注 0票数 3

所以,我是C#的新手(大约两周),在我借来的关于数组之类的教科书中,我已经达到了一个点。

例子很清楚,但用法就不那么明确了。

例如,如果我要做一款精灵宝可梦风格的游戏...我可以尝试一下下面的方法吗?

使用一个范围为150的名为" pokemon“的数组来处理每个pokemon的初始实例?

使用带有变量的结构,如"HP“、"Move1”、"Move2“、"Attack”等,当在战斗中需要一个精灵时,可以通过精灵数组调整这些值?

或者我应该使用枚举来处理我认为数组应该做的事情?

这只是一个例子,帮助我将这些概念等同于我更好地理解的东西,我根本不想抄袭精灵宝可梦。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-23 13:07:32

对于枚举,可以将其看作是一种使用单词而不仅仅是数字列出不同值的方法。例如:

代码语言:javascript
复制
enum Element
{
    Normal,
    Fire,
    Water,
    Electric,
    Grass
    //etc.
}

然后是一个Pokemon类,表示一个单独的Pokemon:

代码语言:javascript
复制
class Pokemon
{
    //Properties
    public string Name { get; set; }
    public Element ElementalType { get; set; }

    //Constructor
    public Pokemon(string name, Element type)
    {
        this.Name = name;
        this.ElementalType = type;
    }
}

因此,您可以创建Pokemon对象:

代码语言:javascript
复制
Pokemon myPokemon = new Pokemon("Pikachu",Element.Electric);

C# (和面向对象编程)的核心元素是对数据进行建模,使其适合可移植和可变的对象。这意味着您可以添加各种其他属性(我在这方面做得有点快),例如HP、Moves等。

要创建数组,请执行以下操作:

代码语言:javascript
复制
Pokemon[] allMyPokemons = new Pokemon[150];

然后你需要设置每一个:

代码语言:javascript
复制
allMyPokemons[0] = myPokemon;
票数 6
EN

Stack Overflow用户

发布于 2011-11-23 12:49:22

你看起来肯定是在正确的轨道上。尽管您的数组应该能够为所有这些新的Pokemon保存大约500个元素:P

但是的,创建一个包含关于单个Pokemon的所有常见信息(名称、HP等)的结构是完全合理的。您甚至可以考虑更进一步,在结构中使用数组来存储每次移动。然后,移动可以是包含移动的名称和权限等的另一个结构。

这完全取决于你想要你的应用程序有多详细,以及你想要投入多少精力。显然,如果这是一个学习练习,您会希望投入足够的精力,以便更好地理解这些概念。

我不是C#专家,但是如果C#中的枚举只是一组命名的整型常量,就像在C++中一样,那么它们在这里就没有什么用处了。

我认为这将是一个好主意,从一个包含Pokemon名称的简单结构开始,然后创建一个包含150个Pokemon的数组。在那里,您可以为应用程序添加额外的细节,比如前面提到的Move结构中的Pokemon结构数组。迭代开发通常比试图一下子理解和解决整个问题更容易。

票数 1
EN

Stack Overflow用户

发布于 2011-11-23 12:48:42

我不是一个精灵,但通常你可以将你的C#结构保存在一个数组中,但是你必须通过数组索引来访问它们,这可能会变得很麻烦。我假设C#数组只能通过整数进行索引。

不过,还有其他数据结构可能更有用。你可能很快就会发现这一点。例如列表、集合和地图

是的,你可以在你的程序中使用struct来对概念上的数据进行分组,比如pokemon,或者你正在建模的任何问题。但是,使用类可能更有用。

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

https://stackoverflow.com/questions/8237419

复制
相关文章

相似问题

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