// пересечение объектов: шарика и блоков private bool ObjectCrossing(Rectangle BlockRec, Rectangle BallRec) { Point[] P = new Point[4]; /*Point[] P1 = new Point[4]; * P[0] = new Point(BallRec.Left, BallRec.Top); * P[1] = new Point(BallRec.Left, BallRec.Bottom); * P[2] = new Point(BallRec.Right, BallRec.Top); * P[3] = new Point(BallRec.Right, BallRec.Bottom); */ P[0] = new Point(BallRec.Left + BallRec.Width / 2, BallRec.Top); P[1] = new Point(BallRec.Right, BallRec.Top + BallRec.Height / 2); P[2] = new Point(BallRec.Left + BallRec.Width / 2, BallRec.Bottom); P[3] = new Point(BallRec.Left, BallRec.Top + BallRec.Height / 2); foreach (Point p in P) { // если содержит хотя бы одну точку общую if (BlockRec.Contains(p)) { // скорость мячика может быть равна 1 или 2 if ((BlockRec.Bottom - 2 == BallRec.Top || BlockRec.Top - 2 == BallRec.Bottom || BlockRec.Bottom == BallRec.Top || BlockRec.Top == BallRec.Bottom || BlockRec.Bottom == BallRec.Top + 1 || BlockRec.Top == BallRec.Bottom + 1 )) { Ball.ReverceY(); } else { Ball.ReverseX(); } return(true); } } return(false); }