-1

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;

      }

  }
slugster
  • 49,403
  • 14
  • 95
  • 145
Newbie404
  • 523
  • 4
  • 7

2 Answers2

0

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);       
      }
  }
bumpy
  • 2,002
  • 2
  • 14
  • 19
0

@HansPassant thank you

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;

  }

}
Newbie404
  • 523
  • 4
  • 7