重复代码:我该如何防止这种情况
本文关键字:何防止 情况 代码 | 更新日期: 2023-09-27 17:55:44
我有一个 if else 语句,可以识别用户是否赢得了我的井字游戏,但这是我的任务! :)使代码更紧凑,更易于阅读,我有很多重复的代码块并减少我拥有的代码量。
这是我的一些代码:
if (button1.Text == "X" & button2.Text == "X" & button3.Text == "X")
{
foreach (Button button in addButton())
{
button1.BackColor = Color.Green;
button2.BackColor = Color.Green;
button3.BackColor = Color.Green;
button.Enabled = false;
}
}
else if (button1.Text == "X" & button4.Text == "X" & button7.Text == "X")
{
foreach (Button button in addButton())
{
button1.BackColor = Color.Green;
button4.BackColor = Color.Green;
button7.BackColor = Color.Green;
button.Enabled = false;
}
}
else if (button1.Text == "X" & button5.Text == "X" & button9.Text == "X")
{
foreach (Button button in addButton())
{
button1.BackColor = Color.Green;
button4.BackColor = Color.Green;
button7.BackColor = Color.Green;
button.Enabled = false;
}
}
我在想也许我可以把它放在一个私人方法中?但不确定你是否真的可以,我不知道如何调用方法,甚至一个类?
使用基础数据模型来表示数据。 假设一个整数数组。
int[,] board = new int[,] {{0,0,0}, {0,0,0},{0,0,0}};
然后,每当播放X
时,您都可以将该数组中的位置设置为 1。
每当播放O
时,您都可以将位置设置为 -1。
您只需循环查看您的获胜组合,横跨、向下和 2 个交叉模式,如果它们 = 3 X
获胜,如果它们 = -3,则O
获胜。
试试这个:
Button[] greenButtons = new Button[0]; // buttons to color in green
bool enabled = true; // value of Enabled for each of addButtons() to set
if (button1.Text == "X" & button2.Text == "X" & button3.Text == "X")
{
greenButtons = new[] { button1, button2, button3 };
enabled = false;
}
else if (button1.Text == "X" & button4.Text == "X" & button7.Text == "X")
{
greenButtons = new[] { button1, button4, button7 };
enabled = false;
}
else if (button1.Text == "X" & button5.Text == "X" & button9.Text == "X")
{
greenButtons = new[] { button1, button4, button7 };
enabled = false;
}
foreach (Button button in addButton())
{
button.Enabled = enabled;
}
foreach (Button button in greenButtons)
{
button.BackColor = Color.Green;
}