-1

我是多维数组的新手,只是想确保在今天晚些时候开始针对它进行编码之前,我对搜索有正确的想法。

        public int[,] LocationXY = new int[5,5];

编辑数组搜索多维数组:

用于搜索 5 x 5 的多维数组的伪代码会是这样的吗?

移动地图的 XNA 代码:

            background.direction.X = background.position.X + 3000;
            background.direction.Normalize();
            background.position.X += background.direction.X *               
            ball.speed;
            backgroundWest.direction.X = backgroundWest.position.X + 3000;
            backgroundWest.direction.Normalize();
            backgroundWest.position.X += background.direction.X * ball.speed;
            Map.ArraySearch(XSearch, YSearch);

            //if statement for changing background sprite.  
            if(LocationXY[0,1])
              background01.LoadContent(this.content, "background01";

搜索功能:

public int [,] ArraySearch(XSearch, YSearch)  

  {  
            for(int X = 0; X < XSearch; X++)  
                for(int Y = 0; Y < YSearch; Y++)  
                   if(Y == YSearch && X == XSearch)
                    return LocationXY[XSearch, YSearch]  
       }

一般的想法是为背景所在的 if 语句获取数组值。我希望 switch 语句可以采用多维数组。

4

2 回答 2

2

如果你想要一个矩阵,请使用:int[,]

如果您想要一个数组数组,其中所有子数组都可以具有不同的长度,请使用:int[][]。记住(除了创建主数组)在填充之前总是创建一个子数组,否则你会得到一个 NullReferenceException。

如果您想要 X 和 Y 坐标列表,请使用:Point[]

于 2013-04-27T11:24:36.783 回答
1

我建议您访问 MSDN 并阅读有关数组多维数组锯齿状数组的信息。

您在答案中的代码中所做的有点奇怪……循环和返回值的方式相互矛盾。

假设一个数组int[,] a = new int[X,Y](大小无关紧要),

这将获得索引 m,n 处的单元格:

int value = a[m,n]

这将在数​​组中搜索值为 5 的单元格的位置:

Tuple<int,int> search (int[,] arr, int value)
{
    for(int i=0; i < arr.GetLength(0);i++ )
        for(int j=0; j < arr.GetLength(1);j++)
            if(arr[i,j] == value)
                return Tuple.Create(i,j);
}
于 2013-04-27T13:51:57.803 回答