/// <summary> /// Obtient l'information du navire à partir de la classe de navire. /// </summary> /// <param name="classOfShip"></param> /// <returns></returns> public static ClassOfShipInfo FromClassOfShip(ClassOfShip classOfShip) { switch (classOfShip) { case ClassOfShip.Destroyer: return(new ClassOfShipInfo() { Name = "Destroyer", Symbol = 'D', Lenght = 2, ClassOfShip = classOfShip }); case ClassOfShip.Cruiser: return(new ClassOfShipInfo() { Name = "Cruiser", Symbol = 'c', Lenght = 3, ClassOfShip = classOfShip }); case ClassOfShip.Submarine: return(new ClassOfShipInfo() { Name = "Submarine", Symbol = 'S', Lenght = 3, ClassOfShip = classOfShip }); case ClassOfShip.BattleShip: return(new ClassOfShipInfo() { Name = "BattleShip", Symbol = 'B', Lenght = 4, ClassOfShip = classOfShip }); case ClassOfShip.Carrier: return(new ClassOfShipInfo() { Name = "Carrier", Symbol = 'C', Lenght = 5, ClassOfShip = classOfShip }); default: throw new InvalidOperationException("Type de navire inconnue"); } }
/// <summary> /// Construit la position complète d'un navire. /// </summary> /// <param name="classOfShip">Classe du navire.</param> /// <param name="coordonate">Coordonnées X et Y du navire sur le plateau 10x10. Le plateau commence à 0x0 et se termine à 9x9.</param> /// <param name="orientation">Orientation du navire (Verical ou Horizontal).</param> public ShipPosition(ClassOfShip classOfShip, Point coordonate, Orientation orientation) { Class = classOfShip; Coordonate = coordonate; Orientation = orientation; ClassOfShipInfo = ClassOfShipInfo.FromClassOfShip(classOfShip); }
/// <summary> /// Constructeur d'un navire. /// </summary> /// <param name="shipPosition">Position et type du navire.</param> public Ship(ShipPosition shipPosition) { Orientation = shipPosition.Orientation; ClassOfShipInfo = shipPosition.ClassOfShipInfo; //TODO: Revoir la pertinence de cette classe et de son usage. Lenght = shipPosition.ClassOfShipInfo.Lenght; TopLeft = shipPosition.Coordonate; BottomRight = shipPosition.Coordonate + shipPosition.Size - new Size(1, 1); // -1 en X et Y car on TopLeft "consomme" une case Class = shipPosition.Class; HealthPoint = Lenght; }