2013-08-03 69 views
0

我正在做一个(非常基础的)游戏。因此我需要为(很多)实体存储数据。如何给变量赋多个值?

所以我想出了这个概念:

String[] Entity_Data = new String[EntityCount]; 
Entity_Data[0] = "1 12 98 45";//Or other numbers... 

第一个数字可能是这样的饥饿状态或步行速度,甚至是X或Y坐标。

有没有办法给数组中的每个变量多个值?

+3

使用具有属性的类,然后将多个实例存储在'List '中。 –

+1

一个变量=一个值。如果您需要多个值,请使用类似于列表或数组 –

+1

我认为您正在寻找一个多维数组,请查看http://msdn.microsoft.com/en-us/library/2yd9wwz4.aspx – Kurubaran

回答

8

要如何将多个值存储在一个变量的基本问题,使用像一个ListDictionary,或Tuple

List<String> items = new List<String>() { 
    "one", "two", "three" 
}; 

Dictionary<String, String> items = new Dictionary<String, String>() { 
    {"name 1", "value 1"}, 
    {"name 2", "value 2"} 
    {"name 3", "value 3"} 
}; 

var items = new Tuple<string, int, int>("Bad Guy", 100, 50); 

也就是说,你这样做是错误的。创建一个class并使用完全限定的属性/属性。事情是这样:

public class Enemy { 
    private Int32 MaxHitPoints; 
    private Int32 CurrentHitPoints; 
    private Int32 Strength; 
    private Int32 Speed; 
    private List<Weapons>; 

    public Hit(Int32 power) { 
    CurrentHitPoints = CurrentHitPoints - power; 
    if (CurrentHitPoints <= 0) { 
     Die(); 
     Explode(); 
     MakeAMess(); 
    } 
    } 

} 

等等......也许值得细读/发问了在game-dev.SE

+0

如果要为每个条目存储多个对象,则“集合”在集合中也可能有用。 – aevitas

+0

@aevitas Incorporated。谢谢! – svidgen

+0

这非常有帮助。但就我现在所能理解的,我将不得不为每个我添加的敌人创建一个类......对吧? (顺便说一句,我喜欢MakeMess的一部分) – Geoxion

2

您可以使用交错数组,像这样:

string[][] jaggedArray = new string[3][]; 

jaggedArray[0] = new string[5]; 
jaggedArray[1] = new string[4]; 
jaggedArray[2] = new string[2] 
2

除此之外,我爱你“协调”的质朴的拼写,你知道,一个潜在的解决方案就在你的眼前徘徊的事实,等待被发现?

什么是Entity_Data,如果不是一个可以容纳多个值的变量?你在找什么?完全一样的东西!这意味着,你可以声明Entity_Datastring数组的数组(“交错数组”):

var entityData = new string[3][]; 
entityData[0] = new string[] { "1", "2", "3" }; 
entityData[1] = new string[] { "a", "b" }; 
entityData[2] = new string[] { "I", "II", "III", "IV", "V" }; 

我并不认为这是最佳的解决方案,但我认为它值得指出的是,以你的好意。

+0

真的有可能有一个数组的数组?我曾尝试过,但之前我没有得到它的工作...顺便说一句,我写这样Coördinates,因为我是荷兰人;) – Geoxion

+0

@ user2287549:增加了一个代码示例,演示可以声明一个数组数组。 – stakx

2

你应该改为面向对象的概念会很好。您可以将任何类型的变量作为属性存储在类中。如果你想获得一些属性的数据,你应该创建属性来获取或设置属性。

class Player 
{ 
    private string _name; 
    private int _hungerStatus; 
    private int _walkingSpeed; 
    private int _Xco; 
    private int _Yco; 

    // property 
    public string Name 
    { 
     get 
     { 
      return _name; 
     } 
     set 
     { 
      _name = value; 
     } 
    } 
    …   
} 

当你想使用它时, X = player.Nameplayer.Name = "Hero";

查看更多关于http://www.dotnetperls.com/property