コード例 #1
0
 public override void AttaquerZombie()
 {
     // Attaquer la cible si elle est dans le rayon d'attaque
     if (CalculerDistance(position, CiblePersonnage.Position) <= rayonAttaque)
     {
         if (prochaineAttaque <= 0)
         {
             CiblePersonnage.RecevoirDegats(force, this);
             prochaineAttaque = rythmeAttaque;
             SonFusil.Play();
         }
         AjusterRotation(CiblePersonnage.Position);
     }
     // Sinon, si le soldat est en état d'Alerte, se diriger vers la cible quand même
     else if (Alerte)
     {
         MouvementVersCible(CiblePersonnage.Position);
     }
     // Revenir à l'état Normal si aucun zombie à proximité et qu'il n'y a pas d'alerte
     else
     {
         etat            = new EtatNormal(this);
         SymboleEtat     = "N";
         CiblePersonnage = null;
     }
 }
コード例 #2
0
        public override void Update()
        {
            prochaineAttaque--;

            // Priorité no2: Se replier quand il y a trop de zombies près de la base
            if (Game1.NbZombiesCampSurvivants >= 5 && !(etat is EtatRepli))
            {
                etat = new EtatRepli(this);
            }

            else if (CiblePersonnage == null && (etat is EtatNormal))
            {
                CiblePersonnage = TrouverEnnemiPlusProche(position);
                // Attaquer une cible
                if (CiblePersonnage != null)
                {
                    etat = new EtatOffensif(this);
                }
                // Par défaut: Attaquer le camp ennemi
                else
                {
                    etat = new EtatNormal(this);
                }
            }
            // Priorité no1: Aller se cacher si <25% de point de vie
            if (pointsDeVie <= VIE_MAX_ESCRIMEUR / 4 && !(etat is EtatCache))
            {
                //TrouverCouvertPlusProche();
                //CiblePersonnage = null;
                etat = new EtatCache(this);
            }

            base.Update();

            etat.OnUpdate();
        }
コード例 #3
0
 public Survivant(Texture2D image, Vector2 positionDepart, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroite, int vie, float vitesse, int force, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) :
     base(image, positionDepart, rotation, limiteHautGauche, limiteBasDroite, vie, vitesse, force, cible, campAdverse, batch, font)
 {
     etat   = new EtatNormal(this);
     Alerte = false;
 }