//Interaction joueur->Object Collisionnable
        public void Update(ZLPlayer Joueur)
        {
            RecPerso = new Rectangle(Joueur.recPerso.X, Joueur.recPerso.Y, Joueur.recPerso.Width, Joueur.recPerso.Height);

            if (RecPerso.isOnBottomOf(RecObj))
            {
                Joueur.position = new Vector2(Joueur.position.X, Joueur.position.Y + 2);
            }
            else if (RecPerso.isOnTopOf(RecObj))
            {
                Joueur.position = new Vector2(Joueur.position.X, Joueur.position.Y - 2);
            }
            else if (RecPerso.isOnRightOf(RecObj))
            {
                Joueur.position = new Vector2(Joueur.position.X + 2, Joueur.position.Y);
            }
            else if (RecPerso.isOnLeftOf(RecObj))
            {
                Joueur.position = new Vector2(Joueur.position.X - 2, Joueur.position.Y);
            }

            else if (RecPerso.Intersects(RecObj))
            {
                if (Joueur.position.X > RecObj.X)
                {
                    Joueur.position = new Vector2(Joueur.position.X + 2, Joueur.position.Y);
                }
                else
                {
                    Joueur.position = new Vector2(Joueur.position.X - 2, Joueur.position.Y);
                }
            }
        }
예제 #2
0
        public cMainMenu(IServiceProvider serviceProvider, GraphicsDeviceManager graphics)
            : base(serviceProvider, graphics)
        {
            Player        = new ZLPlayer(new  Vector2(158, 300), true, false);
            FirePlayer    = new AnimationPlayer();
            Fire          = new Animation(Ressources.Fire, 75, 0.5f, 1, true);
            ZombieWalking = new Animation(Ressources.Zombie1, 80, 1.5f, 1, true);
            PositionFeu   = new Vector2(440, 125);
            RecTuto       = new Rectangle(90, 160, 270, 250);
            Zombies       = new List <Zombie>();
            FireBalls     = new List <FireBall>();
            FireBalls.Add(new FireBall(new Vector2(-100, 280), SpriteEffects.None));
            Zombies.Add(new Zombie(new Vector2(255, 300)));
            Zombies.Add(new Zombie(new Vector2(235, 360)));
            Zombies.Add(new Zombie(new Vector2(265, 240)));

            Magasin = new GestionMagasin();

            MediaPlayer.Volume      = 0.1f;
            MediaPlayer.IsRepeating = true;
            if (MediaPlayer.Queue.ActiveSong != Ressources.CHSong)
            {
                MediaPlayer.Play(Ressources.CHSong);
            }
        }
예제 #3
0
        public cNiveau2(IServiceProvider serviceProvider, GraphicsDeviceManager graphics)
            : base(serviceProvider, graphics)
        {
            Joueur           = new ZLPlayer(new Vector2(970, 670), false, true);
            Joueur2          = new Ninja(new Vector2(970, 670));
            Joueur3          = new Kirby(new Vector2(100, 200));
            camera           = new Camera(graphics.GraphicsDevice.Viewport);
            rApparition      = new Random();
            camera           = new Camera(graphics.GraphicsDevice.Viewport);
            Hud              = new HUD();
            EV               = new EnnemiVague();
            Hud.balle        = GestionExterne.nbBalleGun;
            Hud.argent       = GestionExterne.argent;
            Hud.fleche       = GestionExterne.nbFleche;
            Hud.balleShotgun = GestionExterne.nbBalleShotgun;
            Hud.laser        = GestionExterne.nbLaser;

            MP = new MusicPlayer(new Song[] { Ressources.PSong, Ressources.FSong
                                              , Ressources.BPSong, Ressources.MGSong, Ressources.RESong });

            MP.Load(GestionExterne.numSong);

            Obj  = new List <ObjCollisionable>();
            Obj2 = new List <OBJCollisionable>();


            Zombies       = new List <Zombie>();
            ZombiesCR     = new List <ZombieCR>();
            ZombiesF      = new List <ZombieF>();
            BossZombies   = new List <BossZombie>();
            BossZombiesCR = new List <BossZombieCR>();
            BossZombiesF  = new List <BossZombieF>();

            ZombiesAppartition = new Vector2[14] {
                new Vector2(200, 215), new Vector2(715, -50), new Vector2(1060, -50), new Vector2(1670, 230),
                new Vector2(1700, 500), new Vector2(1700, 900), new Vector2(1700, 1100), new Vector2(1300, 1100),
                new Vector2(800, 1100), new Vector2(200, 1100), new Vector2(1500, 1300), new Vector2(1200, 1300),
                new Vector2(600, 1300), new Vector2(400, 1300)
            };
            #region Obj Collisionable
            Obj.Add(new ObjCollisionable(new Rectangle(250, 785, 25, 5)));
            Obj.Add(new ObjCollisionable(new Rectangle(75, 55, 210, 10)));
            Obj.Add(new ObjCollisionable(new Rectangle(75, 5, 220, 50)));
            Obj.Add(new ObjCollisionable(new Rectangle(340, 395, 13, 10)));
            Obj.Add(new ObjCollisionable(new Rectangle(1430, 165, 10, 5)));
            Obj.Add(new ObjCollisionable(new Rectangle(1520, 880, 10, 5)));
            Obj.Add(new ObjCollisionable(new Rectangle(460, 570, 20, 100)));
            Obj.Add(new ObjCollisionable(new Rectangle(480, 590, 10, 80)));
            Obj.Add(new ObjCollisionable(new Rectangle(1470, 570, 20, 100)));
            Obj.Add(new ObjCollisionable(new Rectangle(1450, 590, 10, 80)));
            #endregion

            foreach (ObjCollisionable O in Obj)
            {
                Obj2.Add(new OBJCollisionable(O.recObj));
            }
        }
예제 #4
0
        public cNiveau1(IServiceProvider serviceProvider, GraphicsDeviceManager graphics)
            : base(serviceProvider, graphics)
        {
            Joueur      = new ZLPlayer(new Vector2(100, 200), false, true);
            Joueur2     = new Ninja(new Vector2(100, 200));
            Joueur3     = new Kirby(new Vector2(100, 200));
            rApparition = new Random();
            camera      = new Camera(graphics.GraphicsDevice.Viewport);
            Hud         = new HUD();
            EV          = new EnnemiVague();

            Hud.balle        = GestionExterne.nbBalleGun;
            Hud.argent       = GestionExterne.argent;
            Hud.fleche       = GestionExterne.nbFleche;
            Hud.balleShotgun = GestionExterne.nbBalleShotgun;
            Hud.laser        = GestionExterne.nbLaser;

            MP = new MusicPlayer(new Song[] { Ressources.PSong, Ressources.FSong
                                              , Ressources.BPSong, Ressources.MGSong, Ressources.RESong });

            MP.Load(GestionExterne.numSong);

            Obj  = new List <ObjCollisionable>();
            Obj2 = new List <OBJCollisionable>();

            Zombies            = new List <Zombie>();
            ZombiesCR          = new List <ZombieCR>();
            ZombiesF           = new List <ZombieF>();
            BossZombies        = new List <BossZombie>();
            BossZombiesCR      = new List <BossZombieCR>();
            BossZombiesF       = new List <BossZombieF>();
            ZombiesAppartition = new Vector2[10] {
                new Vector2(100, 50), new Vector2(100, 500), new Vector2(800, 50), new Vector2(800, 500),
                new Vector2(400, 500), new Vector2(400, 50), new Vector2(1200, 50), new Vector2(1200, 500),
                new Vector2(1800, 50), new Vector2(1800, 500)
            };
            #region Objects Collisionables
            Obj.Add(new ObjCollisionable(new Rectangle(190, 20, 20, 20)));
            Obj.Add(new ObjCollisionable(new Rectangle(360, 245, 13, 10)));
            Obj.Add(new ObjCollisionable(new Rectangle(360, 330, 1, 20)));
            Obj.Add(new ObjCollisionable(new Rectangle(500, 0, 1, 130)));
            Obj.Add(new ObjCollisionable(new Rectangle(500, 300, 1, 10)));
            Obj.Add(new ObjCollisionable(new Rectangle(500, 430, 1, 10)));
            Obj.Add(new ObjCollisionable(new Rectangle(610, 210, 5, 10)));
            Obj.Add(new ObjCollisionable(new Rectangle(1090, 70, 1, 1)));
            Obj.Add(new ObjCollisionable(new Rectangle(1090, 330, 1, 1)));
            Obj.Add(new ObjCollisionable(new Rectangle(1330, 235, 70, 10)));
            Obj.Add(new ObjCollisionable(new Rectangle(1560, 210, 1, 1)));
            Obj.Add(new ObjCollisionable(new Rectangle(1540, 250, 1, 20)));
            #endregion

            foreach (ObjCollisionable O in Obj)
            {
                Obj2.Add(new OBJCollisionable(O.recObj));
            }
        }
        public void Update(ZLPlayer Joueur)
        {
            ///Pour que la vie descendre beaucoup moins vite et pour donner un peu plus de facilité VieReele est gérée
            if (Joueur.hurt)
            {
                if (Joueur.hurtLevel == 1)
                {
                    VieReele -= 0.10f;
                }
                else if (Joueur.hurtLevel == 2)
                {
                    VieReele -= 0.15f;
                }
                else if (Joueur.hurtLevel == 3)
                {
                    VieReele -= 0.20f;
                }
                CompteurNoTouch = 0; Invisible = false;
            }

            //Compteur pour faire disparaitre Barre de vie si non touché (ne fait pas le traitement si deja invisible)
            else
            {
                if (!Invisible)
                {
                    CompteurNoTouch++; if (CompteurNoTouch == 120)
                    {
                        Invisible = true;
                    }
                }
            }

            //Position
            Position = new Vector2(Joueur.position.X - RecVisible.Width / 2, Joueur.position.Y - 8 * (RecVisible.Height));

            //Changement de grosseur du rectangle
            RecVisible.Width = (int)VieReele;

            //Si grosseur=0 C'EST LA MORT
            if (RecVisible.Width == 0)
            {
                Tuer = true;
            }

            //Position TexteBackspace
            if (Position.X < 800)
            {
                PosBackSpace = new Vector2(350, 450);
            }
            else if (Position.X < 1600)
            {
                PosBackSpace = new Vector2(1200, 20);
            }
        }
예제 #6
0
        public cIntro(IServiceProvider serviceProvider, GraphicsDeviceManager graphics)
            : base(serviceProvider, graphics)
        {
            Player       = new ZLPlayer(new Vector2(-100, 300), true, false);
            GMPlayer     = new AnimationPlayer();
            GrandMere    = new Animation(Ressources.GrandMa, 150, 0.2f, 1, true);
            Explosion    = new Animation(Ressources.Explosion, 100, 0.2f, 1.5f, false);
            PositionGMLF = new Vector2(700, 300);
            FireBalls    = new List <FireBall>();
            FireBalls.Add(new FireBall(new Vector2(-100, 280), SpriteEffects.None));

            MediaPlayer.Volume      = 0.1f;
            MediaPlayer.IsRepeating = true;
            MediaPlayer.Play(Ressources.CHSong);
        }
예제 #7
0
        public void Update(ZLPlayer Joueur)
        {
            RecL = new Rectangle((int)Position.X - 100, (int)Position.Y, 435, 50);

            //Deplacement par rapport au perso
            flip        = Joueur.Flip;
            Position    = Joueur.position;
            Position.Y += 3;
            if (flip == SpriteEffects.None)
            {
                this.Position.X += 172;
            }
            else
            {
                this.Position.X -= 172;
            }
        }
예제 #8
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;

                #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 += 0.25f;
                    }
                    else if (Joueur.position.X < Position.X)
                    {
                        Position.X -= 0.25f;
                    }

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

            //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);
            }
            else if (recPerso.Intersects(RecZombie))
            {
                //Si touche a scie
                if (Joueur.apJoueur.Animation == Joueur.scieArming && Joueur.Flip == flip)
                {
                    if (flip == SpriteEffects.None)
                    {
                        Position.X++;
                    }
                    else
                    {
                        Position.X--;
                    } nbTouche++; if (nbTouche == 20)
                    {
                        Killed = true;
                    }
                }

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

            else if (!Attack)
            {
                APZ.PlayAnimation(Walking);
            }
            #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))
                    {
                        nbTouche++;
                    }
                    if (nbTouche == 40)
                    {
                        Killed = true;
                    }
                }
            }
            #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))
                    {
                        nbTouche++; Joueur.balles.RemoveAt(B);
                    }
                    if (nbTouche >= 5)
                    {
                        Killed = true;
                    }
                }
            }
            #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))
                        {
                            nbTouche++; Joueur.cartouches[C].eclats.RemoveAt(c);
                        }
                    }
                    if (nbTouche >= 10)
                    {
                        RecZombie = new Rectangle(-100, -100, 10, 10);; Killed = true;
                    }
                }
            }
            #endregion

            #region Si Touche à Laser
            if (Joueur != null)
            {
                for (int L = 0; L < Joueur.lasers.Count; L++)
                {
                    if (Joueur.lasers[L].recL.Intersects(RecZombie))
                    {
                        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.ZombieDie.Play(0.1f, -1f, 0f);
            }
        }
예제 #9
0
 public void Update(Vector2 PosCamera, ZLPlayer Joueur)
 {
     Position = PosCamera;
     Arme     = Joueur.numArmement;
     Chargeur.Update(Position, Arme, Joueur.nbBalle, Joueur.nbFleche, Joueur.nbBalleS, Joueur.nbLaser);
 }