我正在玩井字游戏,我想在用户获胜时显示一个消息框。但是当我测试它并单击button1,button2和button3时,在窗体或控制台上什么也没有发生。我想我将==和=运算符弄混了,但我不确定到底是什么。
这是我当前的代码:
valueObs
答案 0 :(得分:0)
您的代码不是很优雅,但是可以使用:
bool buttonisclicked1 = false;
bool buttonisclicked2 = false;
bool buttonisclicked3 = false;
public void button1_Click(object sender, EventArgs e)
{
Button clickedButton1 = (Button)sender;
buttonisclicked1 = true;
clickedButton1.Text = "X";
Win();
}
public void button2_Click(object sender, EventArgs e)
{
Button clickedButton2 = (Button)sender;
buttonisclicked2 = true;
clickedButton2.Text = "X";
Win();
}
public void button3_Click(object sender, EventArgs e)
{
Button clickedButton3 = (Button)sender;
buttonisclicked3 = true;
clickedButton3.Text = "X";
Win();
}
public void Win()
{
if (buttonisclicked1 && buttonisclicked2 && buttonisclicked3 == true)
{
Console.WriteLine("You won");
MessageBox.Show("You won!");
}
}
答案 1 :(得分:0)
您永远不会调用Win()
方法。您声明但不使用它。
bool buttonisclicked1 = false;
bool buttonisclicked2 = false;
bool buttonisclicked3 = false;
public void button1_Click(object sender, EventArgs e)
{
Button clickedButton1 = (Button)sender;
clickedButton1.Text = "X";
buttonisclicked1 = true;
Win()
}
public void button2_Click(object sender, EventArgs e)
{
Button clickedButton2 = (Button)sender;
clickedButton2.Text = "X";
buttonisclicked2 = true;
Win()
}
public void button3_Click(object sender, EventArgs e)
{
Button clickedButton3 = (Button)sender;
clickedButton3.Text = "X";
buttonisclicked3 = True;
Win()
}
public void Win()
{
if (buttonisclicked1 && buttonisclicked2 && buttonisclicked3 == true)
{
Console.WriteLine("You won");
MessageBox.Show("You won!");
}
}
}
我将Win()
放在每个Click Event()
中的原因是,尽管单击了按钮的顺序,它仍会每次检查条件。
您不需要使用If
语句来检查按钮的.Text
属性是否已更改,因为它的设置为始终更改为{{1 }}。如果您有其他条件,并且在{em>内进行了编码,可以将'X'
属性更改为其他内容,那么最好使用Click Event
声明。否则-没必要。
据我所知-您似乎在.Text
语句中使用了If
和==
:)