2011-11-23 66 views
3

所以,我对C#非常陌生(大约两周),并且在借用的关于Arrays等的教科书中已经达到了一个要点。我有这个权利吗? (Arrays,Enums.Structs)

这里的例子很清楚,但用法不那么明显。

例如,如果我要做一个口袋妖怪风格的游戏......我会正确地尝试以下吗?

使用范围为150的名为“Pokemon”的数组来处理每个宠物小精灵的初始实例?

使用一个结构变量,如“HP”“Move1”“Move2”“Attack”等等,当Pokemon数组需要在战斗中时可以通过Pokemon数组进行调整。

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

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

+2

请谁回答了这个拿出一个更好的样本:) – Prescott

+2

你应该叫他们“Pokeymon”什么的,以避免官司:P –

回答

6

对于枚举,把它们想象成一种用单词列出不同值而不仅仅是数字的方式。例如:

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 myPokemon = new Pokemon("Pikachu",Element.Electric); 

C#的芯元件(和面向对象的程序设计)正在对你的数据进行建模,使它适合可移植和可改变的对象。这意味着你可以添加其他属性的各种(我去有点快与此),如HP,移动等

要创建阵列:

Pokemon[] allMyPokemons = new Pokemon[150]; 

然后,你需要设置每之一:

allMyPokemons[0] = myPokemon; 
+0

感谢您的帮助,我知道这个例子有点愚蠢,但它对我有很大的帮助。 – Wompguinea

+1

+1对于初学者有帮助的好帮助! – Fischermaen

+1

@ChrisHinton相反,它是最好的例子。即使我不是口袋妖怪的粉丝,当我看到这个问题时,我只知道我必须回答:) – MPelletier

0

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

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

是的,您可以使用结构在您的程序中为某些概念性数据(例如小精灵或任何您正在建模的问题)分组数据。然而,使用类可能更有用。

1

你当然似乎是在正确的轨道上。虽然你的阵列应该能够容纳大约500个元素的所有那些新的口袋妖怪:P

但是,是的,创建一个包含所有关于单个口袋妖怪(名字,HP等)的公共信息的结构是完全合理的, 。你甚至可以考虑更进一步,并使用里面的数组来存储每个移动。此举可能是另一个结构,其中包含移动的名称和功率等。

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

我不是C#专家,但如果C#中的枚举只是一组命名的整型常量,因为它们在C++中,那么它们在这里对你没有多大用处。

我认为从一个包含口袋妖怪名字的简单结构开始,然后创建一个150口袋妖怪数组是一个好主意。从那里,你可以添加额外的细节到你的应用程序,如上述Pokemon结构中的Move结构数组。迭代开发通常比试图一口气理解和解决整个问题更容易。

+0

” ......虽然你的阵列应该能够容纳约所有这些新宠物小精灵的500个元素。“我只是笑了:] –

+0

我拥有的最后一款宠物小精灵游戏是口袋妖怪黄金,我认为他们应该在此之后停止制作新的宠物小精灵。哈哈,这些日子看起来很荒谬。 –

+0

我在第一次发布时买了口袋妖怪红色。我生命中只有150个口袋妖怪。 – Wompguinea