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; }
/// <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; }
public Chemin Clone() { Chemin c = new Chemin(); foreach (Vecteur parcour in parcours) { c.AddMouvementFin(parcour); } return c; }
/// <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; }
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); } }
/// <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; }