void FieldButtonClick(object sender, MouseEventArgs e) { Cell cell = (Cell)sender; cell.Dock = DockStyle.Fill; cell.Margin = new Padding(0); cell.Size = new Size(cell.Width, cell.Height); if (e.Button == MouseButtons.Left) { if (cell.IsMine) { cell.Text = "*"; MessageBox.Show("You lose!"); Close(); } else { if (cell.NeighborsWithMineCount == 0) { Queue <Cell> queue = new Queue <Cell>(); queue.Enqueue(cell); while (queue.Count > 0) { Cell currentCell = queue.Dequeue(); currentCell.IsOpened = true; if (currentCell.NeighborsWithMineCount == 0) { foreach (Cell c in mineField.GetNeighbours(currentCell.X, currentCell.Y)) { if (!c.IsOpened) { queue.Enqueue(c); c.Text = c.NeighborsWithMineCount.ToString(); } } } } } else { cell.Text = cell.NeighborsWithMineCount.ToString(); } } } }