自动生成井字
本文关键字:自动生成井 | 更新日期: 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];