コード例 #1
0
ファイル: ClassMoving.cs プロジェクト: e-zotova-soft/Arkanoid
        // пересечение объектов: шарика и блоков
        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);
        }