自动生成井字

本文关键字:自动生成井 | 更新日期: 2023-09-27 18:27:39

这是工作

            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";
    } 
}
}

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

考虑到标签也是二维数组,这应该有效:

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];

带有:

var myLabel = labels[i+j];