我有一个带有可调整大小网格的井字游戏。我有一个 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?