显示来自按钮数组的行
本文关键字:数组 按钮 显示 | 更新日期: 2023-09-27 18:01:44
我有一个具有可调整大小的网格的井字游戏程序。我有一个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?
我是这样解决的:
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