2013-04-27 18 views
-1

我是多維數組的新手,只想在今天晚些時候開始編寫代碼之前確保自己有正確的搜索想法。我對C#中的多維數組搜索有正確的想法嗎?

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

編輯陣列搜索多維數組:

會搜索由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語句可以採用多維數組。

+3

找出的最佳方法 - 嘗試它。玩吧。看看發生了什麼。一個簡單的編程和測試輸入,輸出和調試的簡單程序將比你在這裏給出答案的人更多地教你。 – Oded 2013-04-27 11:20:01

+4

您的代碼看起來技術上正確,但肯定不是註冊X,Y座標的最好或最簡單的方法。考慮一個'List '。 – 2013-04-27 11:24:10

+0

什麼問題? – Patrick 2013-04-27 11:56:36

回答

1

,我建議你去MSDN和閱讀有關arraymultidimensional arraysjagged arrays.

你在你的答案代碼正在做什麼樣的怪......的循環和你正在返回的路上值矛盾。

假定陣列int[,] a = new int[X,Y](大小並不重要),

這會得到在索引m的細胞中,n:

int value = a[m,n] 

這將搜索陣列的小區的位置的那有價值五:

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); 
} 
+0

會switch語句的語法是'開關(Map.TupleHolder.Item1)'' 情況下爲0;'' 開關(Map.TupleHolder.Item2)'' 情況:0' – ZeroPhase 2013-04-27 23:48:34

+0

沒有... HTTP: //msdn.microsoft.com/en-us/library/vstudio/06tc147t.aspx – 2013-04-28 07:10:48

+0

該語法適用於爲X和Y座標切換選取正確的圖像。 – ZeroPhase 2013-04-28 08:15:16

2

如果你想有一個矩陣,使用方法:int[,]

如果你想數組的數組,在所有子陣列可以有不同的長度,使用:int[][]。記住(除了創建主數組),在填充之前始終創建一個子數組,否則會得到一個NullReferenceException。

如果您想要X和Y座標列表,請使用:Point[]

+0

用於搜索5乘5的多維數組的僞代碼是否會像這樣? '公共INT [,] ArraySearch(XSearch,YSearch) { 對(INT X = 0; X ZeroPhase 2013-04-27 13:21:25

+0

我不明白你想要什麼。你的代碼只返回第一行的第一個元素,即:'LocationXY [0,0]'。 – 2013-04-27 13:26:21

+0

所以,我只需要用'if(Y == YSearch)'來包裝'return'來獲取特定座標? – ZeroPhase 2013-04-27 13:33:51