我有一个简单的问题,但对我来说有点困惑所以我很感激提供的所有帮助:)。
基本上,我想要一个2D数组,长度为9,数值为1。 所以,如果我要初始化它,那就是:
int[,] array = new int[8, 1];
我的问题是我感到困惑。我正在制作一个tic tac toe游戏,第一个值就是位置。每次转弯时我都会使用int来增加一个值。但是,第二个值我要保持'0'或'1'或'2'。 '0'意味着没有人在这里打过'1'意味着x已经在这里打了'2'意味着o已经在这里打过。
理想地访问数组时(尽管我不能)我只想指定array [m]但是要访问数组我需要输入数组[m,0]。我希望第二个值保存一个值,而不是一个访问数组的位置,如果有意义的话。
如果我不能用二维阵列做这个,那么有没有人建议使用什么? 如果需要更多信息,请告诉我。
答案 0 :(得分:1)
詹姆斯·冈特说:
int[] array = new int[9];
在这个数组中,索引是位置,存储在该索引处的值是0 = Nothing,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。
答案 1 :(得分:0)
您应该使用2D对象数组,其中每个对象保存空间的值,另一个对象保持位置(我猜你的意思是它的播放顺序)。
答案 2 :(得分: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];
答案 3 :(得分:0)
听起来像是在3x3网格之后,你可以简单地使用2D数组:
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
您需要进行一些初始化并修改值才能使其正常工作。