我说对了吗?(数组、枚举.结构体)
本文关键字:数组 枚举 结构体 | 更新日期: 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#数组只能被整数索引。
还有其他可能更有用的数据结构。你可能很快就会知道了。例如:列表、集合和映射
是的,在你的程序中,你可以使用结构体来为一些概念性的东西分组数据,比如口袋妖怪,或者你正在建模的任何问题。不过,使用类可能更有用。