示例#1
0
        internal static void EnemyCollisions()
        {
            Enemy deadEnemy = null;

            foreach (Enemy en in Resources.levelOneEnemies)
            {
                if (Math.Abs(en.enemy.Left - Mario.mario.Left) <= 18 * x)
                {
                    foreach (Control c in form.Controls)
                    {
                        if (c is PictureBox && c.Tag == "block" && Math.Abs((c as PictureBox).Left - Mario.mario.Left) <= 20 * x)
                        {
                            if (en.enemy.Bounds.IntersectsWith(c.Bounds))
                            {
                                if (BottomCollision(en.enemy, c as PictureBox))
                                {
                                    en.enemy.Top = c.Top - x;
                                    en.force     = 0;
                                }

                                if (RightCollision(en.enemy, c as PictureBox))
                                {
                                    en.right      = false;
                                    en.enemy.Left = c.Left - x;
                                    en.left       = true;
                                }

                                if (LeftCollision(en.enemy, c as PictureBox))
                                {
                                    en.left       = false;
                                    en.enemy.Left = c.Right;
                                    en.right      = true;
                                }
                            }
                        }
                    }
                    if (Mario.mario.Bounds.IntersectsWith(en.enemy.Bounds))
                    {
                        if (BottomCollision(Mario.mario, en.enemy))
                        {
                            Mario.jump  = true;
                            Mario.force = 8;
                            en.Die();
                            deadEnemy = en;
                        }
                        else
                        {
                            if (!Mario.invincible)
                            {
                                if (Mario.upgrade == 0)
                                {
                                    Mario.Lose();
                                }
                                else
                                {
                                    Mario.GotHit();
                                }
                            }
                        }
                    }
                }
            }

            if (deadEnemy != null)
            {
                Resources.levelOneEnemies.Remove(deadEnemy);
            }
        }