I'm trying to show just one message box using the gameover bool to control the situation but it doesn't work, its showing infinite message boxes.
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
blocks execution of the code until you close the message box, so you need to move the assignment of gameover before the call to 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);
}
}