只显示一个消息框
Show just one message box
我试图使用 gameover bool 来控制情况只显示一个消息框,但它不起作用,它显示了无限个消息框。
bool player2turn = false;
bool gameover = false;
private void timer1_Tick(object sender, EventArgs e)
{
if ((pb00.BackColor == pb10.BackColor) && (gameover == false))
{
winner();
}
}
private void winner()
{
if (player2turn == false)
{
MessageBox.Show("Player 2 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
else
{
MessageBox.Show("Player 1 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
}
MessageBox.Show
会阻止代码的执行,直到您关闭消息框,因此您需要在调用 MessageBox.Show
.
之前移动 gameover 的分配
private void winner()
{
if (player2turn == false)
{
gameover = true;
MessageBox.Show("Player 2 wins!", "Retry?", MessageBoxButtons.YesNo);
}
else
{
gameover = true;
MessageBox.Show("Player 1 wins!", "Retry?", MessageBoxButtons.YesNo);
}
}
@HansPassant 谢谢
private void winner()
{
if (player2turn == false)
{
timer1.Stop();
MessageBox.Show("Player 2 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
else
{
timer1.Stop();
MessageBox.Show("Player 1 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
}
我试图使用 gameover bool 来控制情况只显示一个消息框,但它不起作用,它显示了无限个消息框。
bool player2turn = false;
bool gameover = false;
private void timer1_Tick(object sender, EventArgs e)
{
if ((pb00.BackColor == pb10.BackColor) && (gameover == false))
{
winner();
}
}
private void winner()
{
if (player2turn == false)
{
MessageBox.Show("Player 2 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
else
{
MessageBox.Show("Player 1 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
}
MessageBox.Show
会阻止代码的执行,直到您关闭消息框,因此您需要在调用 MessageBox.Show
.
private void winner()
{
if (player2turn == false)
{
gameover = true;
MessageBox.Show("Player 2 wins!", "Retry?", MessageBoxButtons.YesNo);
}
else
{
gameover = true;
MessageBox.Show("Player 1 wins!", "Retry?", MessageBoxButtons.YesNo);
}
}
@HansPassant 谢谢
private void winner()
{
if (player2turn == false)
{
timer1.Stop();
MessageBox.Show("Player 2 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
else
{
timer1.Stop();
MessageBox.Show("Player 1 wins!", "Retry?", MessageBoxButtons.YesNo);
gameover = true;
}
}