我有一个tic tac toe程序,有一个可调整大小的网格。我有一个CheckXWinner()函数,用于检查网格中的水平,垂直和两个对角线获胜组合。胜利检定效果很好但是在某个组合赢了之后,我需要通过将它们变成不同颜色来突出显示那些获胜按钮,我会说IndiaRed,并且最好通过它们划一条线。我很高兴至少让他们变红了。
public void CheckXWinner(Button[] buttonArray)
{
int arrLength = buttonArray.Length;
int hCount = 0;
int vCount = 0;
int d1Count = 0;
int d2Count = 0;
int root = (int)Math.Sqrt(Convert.ToDouble(arrLength));
for (int i = 0; i < root; i++)
{
//Sets the counter for the winners back to zero
d2Count = 0;
d1Count = 0;
hCount = 0;
vCount = 0;
for(int j = 0; j < root; j++)
{
//increments the appropriate counter if the button contains an X
if (buttonArray[ (i * root) + j ].Text == "X")
hCount++;
if (buttonArray[ j + (j * root)].Text == "X")
d1Count++;
if (buttonArray[(j * (root - 1)) + (root - 1)].Text == "X")
d2Count++;
if (buttonArray[ i + (root * j)].Text == "X")
vCount++;
}
//if the counter reaches the amount needed for a win, show win message
if ( hCount == root )
{
MessageBox.Show("Horizontal winner found !");
break;
}
else if ( vCount == root )
{
MessageBox.Show("Virtical winner found !");
break;
}
else if ( d1Count == root )
{
MessageBox.Show("Diagonal winner found !");
break;
}
else if (d2Count == root)
{
MessageBox.Show("Diagonal winner #2 found !");
break;
}
}//end of for loop
}//end of CheckXWinner
一旦我获得了获胜计数,我怎么能回去并将这些按钮的.backcolor属性更改为IndiaRed?
答案 0 :(得分:0)
public void CheckXWinner(Button[] buttonArray)
{
int arrLength = buttonArray.Length;
int root = (int)Math.Sqrt(Convert.ToDouble(arrLength));
for (int i = 0; i < root; i++)
{
//Sets the counter for the winners back to zero
int d2Count = 0;
int d1Count = 0;
int hCount = 0;
int vCount = 0;
for(int j = 0; j < root; j++)
{
//increments the appropriate counter if the button contains an X
//Horizonal win
if (buttonArray[(i*root) + j].Text == "X")
{
hCount++;
if (hCount == root)
{
for (int z = (root - 1); z >= 0; z--)
{
buttonArray[(i*root) + z].BackColor = Color.IndianRed;
}
Xwins();
}
}//end of Horizonal win
//Left to right diagonal
if (buttonArray[j + (j*root)].Text == "X")
{
d1Count++;
if (d1Count == root)
{
for (int z = (root - 1); z >= 0; z--)
{
buttonArray[z + (z * root)].BackColor = Color.IndianRed;
}
Xwins();
}
}//end of LTR win
//Right to left diagonal
if (buttonArray[(j*(root - 1)) + (root - 1)].Text == "X")
{
d2Count++;
if (d2Count == root)
{
for (int z = (root - 1); z >= 0; z--)
{
buttonArray[(z*(root - 1)) + (root - 1)].BackColor = Color.IndianRed;
}
Xwins();
}
}//end of RTL win
//Vertical win
if (buttonArray[i + (root*j)].Text == "X")
{
vCount++;
if (vCount == root)
{
for (int z = (root - 1); z >= 0; z--)
{
buttonArray[i + (root*z)].BackColor = Color.IndianRed;
}
Xwins();
}
}//end of vert win
}//end of for j loop
}//end of for loop
}//end of CheckXWinner