这是有效的
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#做一个自动的tic-tac-toe游戏。我只能让标签显示所有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";
}
}
答案 0 :(得分:3)
您正在浏览每个项目,然后对于每个标签,您将根据该项目设置X或O.
所以它要么全部是X,要么全部取决于最后一项是什么。
您需要一种将标签与商品相关联的方法。如果你知道这两个数组都是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";
}
}
}
答案 1 :(得分:0)
这一代太快,以至于它只使用相同的种子作为随机数。每次尝试生成数字时都会生成一个新的种子rand实例。
答案 2 :(得分:0)
这应该有效,因为标签也是二维数组:
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];