做空多头 if 语句
本文关键字:if 语句 | 更新日期: 2023-09-27 17:55:41
我花了几个小时制作一个井字游戏,主要使用if else语句,我只是复制和粘贴了一些代码......
我如何只创建代码的一个实例,然后稍后引用它? - 当我需要该代码时,而不是每次都复制和粘贴大量代码行。在这个代码块中,我得到一个介于 1 到 10 之间的随机数,这个数字将存储在 RI 中......然后,当轮到Ai时,计算机将在按钮中随机输入一个X,然后使用此代码进行检查以确定计算机是否获胜。我希望这是有道理的=)
do
{
storeRI = rc.Next(0, 10); //storing random number into storeRI so it can be used later on in life.
if (storeRI == 1 && btn1.Text == "")
{
btn1.Text = "X";
Turn = 1;
if (btn1.Text == "X" & btn2.Text == "X" & btn3.Text == "X")
{
btn1.BackColor = Color.Green;
btn2.BackColor = Color.Green;
btn3.BackColor = Color.Green;
XScore += 1;
lblPScoreX.Text = XScore.ToString();
foreach (Button btn in buttonList)
btn.Enabled = false;
}
else if (btn1.Text == "X" & btn4.Text == "X" & btn7.Text == "X")
{
btn1.BackColor = Color.Green;
btn4.BackColor = Color.Green;
btn7.BackColor = Color.Green;
XScore += 1;
lblPScoreX.Text = XScore.ToString();
foreach (Button btn in buttonList)
btn.Enabled = false;
}
}
}
例如,这段代码是一些代码,我已经复制了至少 10 次,它只会让我的代码看起来很丑陋,真的很难阅读。
例如,这段代码是我至少复制了 10 次的一些代码
每次复制代码时,都应尝试将其移动到方法中。 然后,可以直接调用该方法。 在您的情况下,一种方法可以轻松接受要影响的三个按钮,并直接处理它们。
bool TestWin(Button btnA, Button btnB, button btnC)
{
if (btnA.Text == "X" & btnB.Text == "X" & btnC.Text == "X")
{
btnA.BackColor = Color.Green;
btnB.BackColor = Color.Green;
btnC.BackColor = Color.Green;
XScore += 1;
lblPScoreX.Text = XScore.ToString();
foreach (Button btn in buttonList)
{
btn.Enabled = false;
}
return true;
}
return false;
}
if (!TestWin(btn1, btn2, btn3))
TestWin(btn1, btn4, btn7);
您可能想要研究的重构技术是 合并重复的条件片段
if (btn1.Text == "X" & btn2.Text == "X" & btn3.Text == "X")
{
btn2.BackColor = Color.Green;
btn3.BackColor = Color.Green;
}
else if (btn1.Text == "X" & btn4.Text == "X" & btn7.Text == "X")
{
btn4.BackColor = Color.Green;
btn7.BackColor = Color.Green;
}
else
{
return/break/continue; // hard to tell which you what as you have a do without a corresponding while
}
btn1.BackColor = Color.Green;
XScore += 1;
lblPScoreX.Text = XScore.ToString();
foreach (Button btn in buttonList)
{
btn.Enabled = false;
}
if (btn1.Text == "X")
{
btn1.BackColor = Color.Green;
if(btn2.Text == "X" & btn3.Text == "X")
btn2.BackColor = Color.Green;
btn3.BackColor = Color.Green;
}
else if (btn4.Text == "X" & btn7.Text == "X")
{
btn4.BackColor = Color.Green;
btn7.BackColor = Color.Green;
}
XScore += 1;
lblPScoreX.Text = XScore.ToString();
foreach (Button btn in buttonList)
{
btn.Enabled = false;
}
}
长 if else 语句没有错;拥有长可读代码比短而难以管理的代码更好。
我可以看到的可能有帮助的一件事是添加一个方法(更改了一些以匹配您的类型):
public void ChangeButtonColor(Color thisColor, params Button[] buttons)
{
foreach (Button thisButton in buttons)
{
thisButton.BackColor = thisColor
}
}
然后,您只需添加代码:
ChangeButtonColor(Color.Green, btn1, btn2, btn3);
这将为您节省一些重复的代码。