2014-02-10 88 views
0

我有一個簡單的問題,但它有點讓我困惑,所以我會很感激任何和所有幫助提供:)。二維數組簡單問題

基本上,我想要一個二維數組,這將是9的長度+ 1值。 所以,如果我初始化它會是:

int[,] array = new int[8, 1]; 

我的問題是我越來越糊塗了。我正在製作一個tic tac toe遊戲,第一個值就是位置。每回合一次,我會用int來增加一個值。但是,我想保持'0'或'1'或'2'的第二個值。 '0'表示沒有人在這裏打過'1'表示x在這裏打過,'2'表示o在這裏打過。

理想情況下訪問數組(儘管我不能)我只想指定數組[m],但要訪問我需要輸入數組[m,0]的數組。我希望第二個值保存一個值,而不是訪問數組的位置,如果有意義的話。

如果我不能用2D陣列做這個,有沒有人有建議使用什麼? 如果需要更多信息,請告訴我。

+0

使用字典呢?或者其他一些鍵/值對的集合? – Gallen

+4

沒有必要指定長度爲1的維度,你不只是想int [] array = new int [9]? –

+2

我想說你或者想要一個[3,3]的數組,或者像Gallen所說的那樣,一個字典,可能帶有某種枚舉作爲關鍵字。無論哪種方式,我會使用'bool?'或另一個枚舉作爲值,因爲那時你只有三種狀態。 – Magus

回答

0

你應該使用對象的二維數組,其中每個對象都保存空間的值,另一個用於位置(我猜你的意思是它的播放順序)。

0

這會工作:

IDictionary<int, int> ticTacToeBoard = new Dictionary<int, int>(); 

//initialize and reset all values on the board to 0 
ticTacToeBoard = resetBoard(ticTacToeBoard); 

int position = 1; 
int value = ticTacToeBoard[position]; 
1

正如詹姆斯·岡特說:

 int[] array = new int[9]; 

在這個數組的索引是位置和存儲的索引值還有什麼0 =沒有, 1 = O's,2 = X's。

您最初的板狀態看起來像

{0,0,0,0,0,0,0,0,0} 

現在X中間移動說:

// {0,0,0,0,2,0,0,0,0} 
array[4] = 2; 

現在O操作在右中移動:

// {0,0,0,0,2,1,0,0,0} 
array[5] = 1; 

等等直到贏得狀態或板上不再存在0。

+0

謝謝!我的虛假錯誤! :d – Zain

0

聽起來你一個3x3的網後,你可以簡單地使用這個二維數組:

const int width = 3; 
const int height = 3; 

var board = new int[height, width]; 

然後,您可以擴展它來檢查,看是否所有的值都是0(例如板空)使用喜歡的事:

bool AllEmpty(int[,] board, int width, int height) 
{ 
    for (int y = 0; y < height; ++y) 
    { 
    for (int x = 0; x < width; ++x) 
    { 
     if (board[y, x] != 0) 
     { 
     return false; 
     } 
    } 
    } 
    return true; 
} 

(你也許可以做一些更好的使用LINQ,但LINQ和多維度沒有發揮太好,所以我已經把它簡單的現在)。

這實質上表示此:

000 
000 
000 

你需要做一些初始化和修改值這個工作。