这是有效的
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";
}
}发布于 2012-03-12 09:59:23
您将遍历每个项目,然后为每个标签设置基于该项目的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";
}
}
}发布于 2012-03-12 10:04:43
生成的速度太快了,以至于它只对随机数使用相同的种子。每次尝试生成一个数字时,都会生成一个新的rand种子实例。
发布于 2012-03-12 10:11:06
考虑到labels也是一个二维数组,这应该是可行的:
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];https://stackoverflow.com/questions/9660849
复制相似问题