private void GenerateHoles() { timer1.Stop(); BallsDoc.ClearHoles(); while (true) { if (BallsDoc.HolesCount() == 5) { break; } int x = Random.Next(_left + Hole.Radius * 2, _width - Hole.Radius * 2); int y = Random.Next(_top + Hole.Radius * 2, _height - Hole.Radius * 2); var center = new Point(x, y); if (BallsDoc.HolesCount() == 0) { BallsDoc.AddHole(center); } else { var h = new Hole(center); bool flag = true; for (int i = 0; i < BallsDoc.HolesCount(); i++) { if (BallsDoc.Holes[i].TouchAnotherHole(h)) { flag = false; break; } } if (flag) { BallsDoc.AddHole(center); } } } Invalidate(); timer1.Start(); }