Пример #1
0
        public static Chemin GetFromString(string chemin)
        {
            Chemin c = new Chemin();
            string[] temp = chemin.Split('|');
            if (temp.Length == 1 && temp[0] == "Chemin vide")
                return c;

            //ici one st sur que chemin non vide
            foreach (string t in temp)
            {
                string[] tempo = t.Split(',');
                c.AddMouvementFin(new Vecteur(Int32.Parse(tempo[0]), Int32.Parse(tempo[1])));

            }

            return c;
        }
Пример #2
0
        /// <summary>
        /// Calcule le chemin (prenant en compte les obstacles) pour aller d'un point à un autre
        /// </summary>
        /// <param name="oDepart">Coordonnee de depart</param>
        /// <param name="oArrivee">coordonnee d'arrivee</param>
        /// <returns>Chemin à emprunter pour y arriver</returns>
        public Chemin CalculerChemin(Coordonnees oDepart, Coordonnees oArrivee)
        {
            var c = new Chemin();

            var a = oDepart.X;
            var b = oArrivee.X;
            var cpt = oDepart.X;
            var res = this.GetChemin(oDepart, oArrivee);
            List<Coordonnees> result = res.Select(t => t.pos).Reverse().ToList();
            for (int i = 0; i < result.Count - 1; i++)
            {
                var diff = (result[i + 1] - result[i]);
                c.AddMouvementFin(new Vecteur(diff));
            }

            Console.WriteLine("Chemin calculé pour aller de " + oDepart + " à " + oArrivee + " : ");
            Console.WriteLine(c.ToString());

            return c;
        }
Пример #3
0
 public Chemin Clone()
 {
     Chemin c = new Chemin();
     foreach (Vecteur parcour in parcours)
     {
         c.AddMouvementFin(parcour);
     }
     return c;
 }
Пример #4
0
 /// <summary>
 /// Verifie que le chemin est bien franchissable
 /// </summary>
 /// <param name="chemin">Chemin à suivre</param>
 /// <param name="joueur">Joueur qà tester</param>
 /// <returns>True si le chemin est valide</returns>
 private bool VerifierChemin(Chemin chemin, Joueur joueur)
 {
     Chemin temp = chemin.Clone();
     var res = true;
     var carte = Contenu.Keys.FirstOrDefault(cont => Contenu[cont].Contains(joueur));
     Coordonnees c = joueur.Position;
     while(temp.TailleParcours>0)
     {
         c = c + temp.Avance();
         res &= carte.GetCase(c.X, c.Y).Franchissable;
         if (!res)
             break;
     }
     return res;
 }
Пример #5
0
 private static void NotifierDeplacement(Chemin c, Joueur j, ListeJoueur lj)
 {
     //envoie message noptif
     var message = MessageFactory.GetInstanceOf(TypeMessage.Notif);
     message.PreparerMessage((object)j.UiUnique.ToString(), (object)c.ToString());
     foreach (var joueur in lj.ToList().Where(joueur => joueur != j))
     {
         joueur.EmetteurJoueur.envoyer(message);
     }
 }
Пример #6
0
        /// <summary>
        /// Constructeur d'un personnage
        /// </summary>
        /// <param name="posX"></param>
        /// <param name="posY"></param>
        /// <param name="g">Game </param>
        public Personnage(int posX, int posY, Game g)
            : this(g)
        {
            this._position = new Coordonnees { X = posX, Y = posY };

            this.OffsetCaseDepl = Vecteur.Zero;
            this.Direction = 2;
            this.Compteur = -1;
            // this.compteur = 0;
            this._cheminPrevu = new Chemin();
            this._cfh = this.FinCheminPrevu;
            this._flagdepl = false;

        }