示例#1
0
        internal static void MarioCollisions()
        {
            foreach (Control c in form.Controls)
            {
                if (c is PictureBox && c.Tag == "block" && Math.Abs((c as PictureBox).Left - Mario.mario.Left) <= 18 * x)
                {
                    if (Mario.mario.Bounds.IntersectsWith(c.Bounds))
                    {
                        if (BottomCollision(Mario.mario, c as PictureBox))
                        {
                            if (Mario.upgrade == 0 || Mario.crouch)
                            {
                                Mario.mario.Top = c.Top - x;
                            }
                            else
                            {
                                Mario.mario.Top = c.Top - 2 * x;
                            }
                            Mario.jump  = false;
                            Mario.force = 0;
                        }

                        if (TopCollision(Mario.mario, c as PictureBox))
                        {
                            Mario.mario.Top = c.Bottom;
                            Mario.force     = 0;

                            if (c.Name.Split(' ')[0] == "questionMark")
                            {
                                QuestionMarkIsHit(c);
                            }

                            if (c.Name == "brick")
                            {
                                BrickIsHit(c);
                            }
                        }

                        if (RightCollision(Mario.mario, c as PictureBox))
                        {
                            Mario.right      = false;
                            Mario.mario.Left = c.Left - x;
                        }

                        if (LeftCollision(Mario.mario, c as PictureBox))
                        {
                            Mario.left       = false;
                            Mario.mario.Left = c.Right;
                        }

                        if (c.Name == "flag1" || c.Name == "flag2")
                        {
                            Mario.Win();
                        }
                    }
                }
            }
        }