我说对了吗?(数组、枚举.结构体)

本文关键字:数组 枚举 结构体 | 更新日期: 2023-09-27 18:15:24

所以,我对c#非常陌生(大约两周),我已经达到了我借来的关于数组之类的教科书的一点。

这些例子很清楚,但是用法就不那么清楚了。

例如,如果我要制作一款pokemon风格的游戏……我可以试试下面的方法吗?

使用一个名为"口袋妖怪"的数组,其范围为150来处理每个口袋妖怪的初始实例?

使用结构变量,如"HP","Move1","Move2","攻击"等,值可以由宝可梦阵列调整,当一个宝可梦是需要在战斗中?

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

这只是一个例子,帮助我将这些概念等同于我更好地理解的东西,我根本不想抄袭口袋妖怪。

我说对了吗?(数组、枚举.结构体)

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

enum Element
{
    Normal,
    Fire,
    Water,
    Electric,
    Grass
    //etc.
}

然后,一个口袋妖怪类,代表一个口袋妖怪:

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对象:

Pokemon myPokemon = new Pokemon("Pikachu",Element.Electric);

c#(和面向对象编程)的核心元素是对数据进行建模,使其适合可移植和可更改的对象。这意味着你可以添加各种其他属性,如HP, Moves等。

创建数组:

Pokemon[] allMyPokemons = new Pokemon[150];

然后你需要设置每一个:

allMyPokemons[0] = myPokemon;

你似乎走对了路。虽然你的数组应该能够容纳大约500个元素为所有这些新的口袋妖怪:P

但是,创建一个包含关于单个Pokemon的所有常见信息(游戏邦注:如名称,HP等)的结构是非常合理的。您甚至可以考虑更进一步,在结构中使用数组来存储每次移动。move可以是另一个结构体,包含move的名称和权力等。

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

我不是c#专家,但如果枚举在c#中只是一组命名的整型常量,就像在c++中一样,那么它们在这里对你来说用处不大。

我认为这将是一个好主意,从一个简单的结构包含一个口袋妖怪的名字,然后创建一个数组150口袋妖怪。在此基础上,您可以向应用程序添加额外的细节,例如前面提到的Pokemon结构中Move结构的数组。迭代开发通常比试图一次理解和解决整个问题更容易。

我不是c#的人,但通常你可以把你的口袋妖怪结构放在一个数组中,但你必须通过数组索引来访问它们,这可能会变得很麻烦。我假设c#数组只能被整数索引。

还有其他可能更有用的数据结构。你可能很快就会知道了。例如:列表、集合和映射

是的,在你的程序中,你可以使用结构体来为一些概念性的东西分组数据,比如口袋妖怪,或者你正在建模的任何问题。不过,使用类可能更有用。