Exemplo n.º 1
0
        public void Update(ZLPlayer Joueur, List <ObjCollisionable> ObjCollisionnable)
        {
            recPerso = new Rectangle(Joueur.recPerso.X + 40, Joueur.recPerso.Y + 80, Joueur.recPerso.Width, 20);

            if (!Disable && !Killed)
            {
                RecZombie.X = (int)Position.X;
                RecZombie.Y = (int)Position.Y - 40;

                #region deplacement
                //gere les Y a une certaine distance du personnage
                if (Math.Abs(Position.X - Joueur.position.X) < 200)
                {
                    if (Joueur.position.X > Position.X)
                    {
                        Position.X++;
                    }
                    else if (Joueur.position.X < Position.X)
                    {
                        Position.X--;
                    }

                    if (Joueur.position.Y > Position.Y)
                    {
                        Position.Y++;
                    }
                    else if (Joueur.position.Y < Position.Y)
                    {
                        Position.Y--;
                    }
                }
                else
                {
                    if (Joueur.position.X > Position.X)
                    {
                        Position.X++;
                    }
                    else
                    {
                        Position.X--;
                    }
                }
                #endregion

                if (Vie != null)
                {
                    Vie.Update(this);
                    if (Vie.tuer)
                    {
                        Killed = true;
                    }
                }
            }

            //Decalement du Rectangle de collsion en conséquence du sens de l'ennemi
            if (recPerso.X > RecZombie.X)
            {
                flip = SpriteEffects.FlipHorizontally; RecZombie.X -= 50;
            }
            else
            {
                flip = SpriteEffects.None; RecZombie.X += 50;
            }

            #region Gestion Des Objects Collisionnable
            if (ObjCollisionnable != null)
            {
                foreach (ObjCollisionable O in ObjCollisionnable)
                {
                    O.Update(this, Joueur.position);
                }
            }
            #endregion

            #region Animation Selon l'environnement
            if (Killed)
            {
                APZ.PlayAnimation(Dead); APR.PlayAnimation(null);
            }
            else if (recPerso.Intersects(RecZombie))
            {
                if (Joueur.apJoueur.Animation == Joueur.scieArming && Joueur.Flip == flip)
                {
                    if (flip == SpriteEffects.None)
                    {
                        Position.X++;
                    }
                    else
                    {
                        Position.X--;
                    } Hurt = true;
                }

                else
                {
                    APZ.PlayAnimation(null); APR.PlayAnimation(null); Attack = true; Vie = null; Joueur.disable = true;
                    if (flip == SpriteEffects.FlipHorizontally)
                    {
                        Position.X += 25;
                    }
                    else
                    {
                        Position.X -= 25;
                    }
                }
            }

            else if (!Attack)
            {
                APZ.PlayAnimation(Walking); APR.PlayAnimation(Roue); Hurt = false;
            }
            #endregion

            #region Si touche à FireBall
            if (Joueur.fireBalls != null)
            {
                for (int F = 0; F < Joueur.fireBalls.Count; F++)
                {
                    if (Joueur.fireBalls[F].recFB.Intersects(RecZombie))
                    {
                        Hurt = true;
                    }
                    else
                    {
                        Hurt = false;
                    }
                }
            }
            #endregion

            #region Si Touche à Ball
            if (Joueur.balles != null)
            {
                for (int B = 0; B < Joueur.balles.Count; B++)
                {
                    if (Joueur.balles[B].recB.Intersects(RecZombie))
                    {
                        Joueur.balles.RemoveAt(B); Vie.vieReele -= 5; Vie.invisible = false;
                    }
                }
            }
            #endregion

            #region Si Touche à Cartouche
            if (Joueur.cartouches != null)
            {
                for (int C = 0; C < Joueur.cartouches.Count; C++)
                {
                    for (int c = 0; c < Joueur.cartouches[C].eclats.Count(); c++)
                    {
                        if (Joueur.cartouches[C].eclats[c].recC.Intersects(RecZombie))
                        {
                            Joueur.cartouches[C].eclats.RemoveAt(c); Vie.vieReele -= 2; Vie.invisible = false;
                        }
                    }
                }
            }
            #endregion

            #region Si Touche à Laser
            if (Joueur != null)
            {
                for (int L = 0; L < Joueur.lasers.Count; L++)
                {
                    if (Joueur.lasers[L].recL.Intersects(RecZombie))
                    {
                        if (flip == SpriteEffects.None)
                        {
                            Position.X += 1.5f;
                        }
                        else
                        {
                            Position.X -= 1.5f;
                        } Hurt = true;
                    }
                }
            }
            #endregion

            #region Clignotement Si tuer
            if (Killed)
            {
                CompteurDead++; if (CompteurDead == 200)
                {
                    Remove = true;
                }
                DeadColor.A -= 10;
                DeadColor.B -= 10;
                DeadColor.G -= 10;
                DeadColor.R -= 10;
            }
            #endregion

            if (Killed && !SoundOneTime)
            {
                SoundOneTime = true; Ressources.ZombieCRDie.Play(0.1f, 0.5f, 0f);
            }
        }
Exemplo n.º 2
0
        public void Update(Perso_Speciaux.Kirby Joueur, List <ObjCollisionable> ObjCollisionnable)
        {
            recPerso = new Rectangle(Joueur.recPerso.X + 40, Joueur.recPerso.Y + 80, Joueur.recPerso.Width, 20);

            if (!Disable && !Killed)
            {
                RecZombie.X = (int)Position.X;
                RecZombie.Y = (int)Position.Y - 40;

                #region deplacement
                //gere les Y a une certaine distance du personnage
                if (Math.Abs(Position.X - Joueur.position.X) < 200)
                {
                    if (Joueur.position.X > Position.X)
                    {
                        Position.X++;
                    }
                    else if (Joueur.position.X < Position.X)
                    {
                        Position.X--;
                    }

                    if (Joueur.position.Y > Position.Y)
                    {
                        Position.Y++;
                    }
                    else if (Joueur.position.Y < Position.Y)
                    {
                        Position.Y--;
                    }
                }
                else
                {
                    if (Joueur.position.X > Position.X)
                    {
                        Position.X++;
                    }
                    else
                    {
                        Position.X--;
                    }
                }
                #endregion

                if (Vie != null)
                {
                    Vie.Update(this);
                    if (Vie.tuer)
                    {
                        Killed = true;
                    }
                }
            }

            //Decalement du Rectangle de collsion en conséquence du sens de l'ennemi
            if (recPerso.X > RecZombie.X)
            {
                flip = SpriteEffects.FlipHorizontally; RecZombie.X -= 50;
            }
            else
            {
                flip = SpriteEffects.None; RecZombie.X += 50;
            }

            #region Gestion Des Objects Collisionnable
            if (ObjCollisionnable != null)
            {
                foreach (ObjCollisionable O in ObjCollisionnable)
                {
                    O.Update(this, Joueur.position);
                }
            }
            #endregion

            #region Animation Selon l'environnement
            if (Killed)
            {
                APZ.PlayAnimation(Dead); APR.PlayAnimation(null);
            }
            else if (recPerso.Intersects(RecZombie))
            {
                if (Joueur.attack || Joueur.jump)
                {
                    if (flip == SpriteEffects.None)
                    {
                        Position.X += 20;
                    }
                    else
                    {
                        Position.X -= 20;
                    } Vie.vieReele -= 20; Hurt = true;
                }

                else
                {
                    Remove      = true;
                    Joueur.hurt = true;
                }
            }

            else if (!Attack)
            {
                APZ.PlayAnimation(Walking); APR.PlayAnimation(Roue); Hurt = false;
            }
            #endregion

            #region si touche à l'air
            if (RecZombie.Intersects(Joueur.recAir) && Joueur.tir)
            {
                Killed = true;
            }
            #endregion

            #region Clignotement Si tuer
            if (Killed)
            {
                CompteurDead++; if (CompteurDead == 200)
                {
                    Remove = true;
                }
                DeadColor.A -= 10;
                DeadColor.B -= 10;
                DeadColor.G -= 10;
                DeadColor.R -= 10;
            }
            #endregion

            if (Killed && !SoundOneTime)
            {
                SoundOneTime = true; Ressources.ZombieCRDie.Play(0.1f, 0.5f, 0f);
            }
        }