C# 自动生成tic-tac-toe

C# 自动生成tic-tac-toe,c#,C#,这是有效的 int index = 0; for (int i = 0; i != ROWS; i++) { for (int n = 0; n != COLS; n++) { if (gameArray[i, n] == 1) { labels[index].Text = "X";

这是有效的

            int index = 0;

        for (int i = 0; i != ROWS; i++)
        {
            for (int n = 0; n != COLS; n++)
            {
                if (gameArray[i, n] == 1)
                {
                    labels[index].Text = "X";
                }
                else if (gameArray[i, n] == 0)
                {
                    labels[index].Text = "O";
                }
                index += 1;
            }
        }
我正在用c#做一个自动的井字游戏。我只能让标签显示所有X或所有O,它从不在所有9个标签中混合其中一个或另一个。下面是我如何得到x或o值的

// initialize our game array
for (int i = 0; i != ROWS; i++)
{
    for (int j = 0; j != COLS; j++)
    {
        gameArray[i, j] = rand.Next(0, 2);
    }
}

// Add the x's and o's to our labels
foreach (int item in gameArray)
{
    foreach (Label myLabel in labels)
    {
        if (item == 1)
            myLabel.Text = "X";
        if (item == 0)
            myLabel.Text = "O";
    }
}

检查每个项目,然后根据该项目为每个标签设置X或O

所以它要么是全X要么全O取决于最后一项是什么

您需要一种将标签与项目关联的方法。如果您知道两个数组的长度都是9

for(int c=0; c<COLS c++)
{
   for(r=0; r<ROWS; r++)
   {
    if(gameArray[r,c] == 1)
    {
       labels[r*COLS+c].Text = "X";
    }
    else if(gameArray[r,c] == 0)
    { 
       labels[r*COLS+c].Text = "O";
    } 
}
}

for(int c=0;c您将检查每个项目,然后针对每个标签,您将基于该项目设置X或O

所以它要么是全X要么全O取决于最后一项是什么

您需要一种将标签与项目关联的方法。如果您知道两个数组的长度都是9

for(int c=0; c<COLS c++)
{
   for(r=0; r<ROWS; r++)
   {
    if(gameArray[r,c] == 1)
    {
       labels[r*COLS+c].Text = "X";
    }
    else if(gameArray[r,c] == 0)
    { 
       labels[r*COLS+c].Text = "O";
    } 
}
}

用于(int c=0;c生成速度太快,它仅对随机数使用同一种子。每次尝试生成数字时,都生成一个新的rand种子实例。

生成速度太快,它仅对随机数使用同一种子。每次尝试生成数字时,都生成一个新的rand种子实例r、

鉴于标签也是一个二维数组,这应该是可行的:

for (int i = 0; i != ROWS; i++)
{
    for (int j = 0; j != COLS; j++)
    {
      var item = rand.Next(0, 2);
      gameArray[i, j] = item; 
      var myLabel = labels[i,j];

      if (item == 1)
        myLabel.Text = "X";
      if(item == 0)
        myLabel.Text = "O"; 
    }
}
如果标签为一维替换:

var myLabel = labels[i,j];
与:


考虑到标签也是二维数组,这应该是可行的:

for (int i = 0; i != ROWS; i++)
{
    for (int j = 0; j != COLS; j++)
    {
      var item = rand.Next(0, 2);
      gameArray[i, j] = item; 
      var myLabel = labels[i,j];

      if (item == 1)
        myLabel.Text = "X";
      if(item == 0)
        myLabel.Text = "O"; 
    }
}
如果标签为一维替换:

var myLabel = labels[i,j];
与:


这是家庭作业吗?他们教过你如何使用调试器了吗?不要在标题中添加
已解决的
-只需在复选框中标记帮助你的答案!这是家庭作业吗?他们教过你如何使用调试器了吗?不要在标题中添加
已解决的
-只需在复选框中标记帮助你的答案!此外,你还可以在同一个循环中初始化数组并设置相应标签的值。gameArray是一个多维数组。不知道标签的视觉效果如何,可能需要调整迭代维度的方式以匹配标签。他的开场白是正确的,并且是问题的根源,不管他的示例是什么e、 除此之外,如果gameArray是二维的,为什么不将标签设为二维,以使关联更具逻辑性?此外,您还可以在同一循环中初始化数组并设置相应标签的值。gameArray是一个多维数组。不知道标签在视觉上是如何完成的,可能需要调整您的设置方式无论他的例子如何,他的开场白都是正确的,也是问题的根源。此外,如果gameArray是二维的,为什么不将标签设为二维以使关联更具逻辑性?