//Méthode qui gère la réception des flottes des joueurs
        void preparerPartie()
        {
            //démarrer le commServeur
            _comVersClient.Connection(2);

            //////////////   JOUEUR 1   ///////////
            //Recevoir flotte               
            String flotteJ1 = _comVersClient.LireMessage(1);
            System.Console.WriteLine("Flotte 1 recue");
            //Interpréter le message contient flotte: reconstruit l'objet
            _flotte1 = lireFlotte(flotteJ1);
            System.Console.WriteLine("Flotte 1 traitee");

            //////////////   JOUEUR 2   ///////////            
            //Recevoir flotte          
            String flotteJ2 = _comVersClient.LireMessage(2);
            System.Console.WriteLine("Flotte 2 recue");
            //Interpréter le message contient flotte: reconstruit l'objet
            _flotte2 = lireFlotte(flotteJ2);
            System.Console.WriteLine("Flotte 2 traitee");
            
            //Définir la première flotte attaquée:
            //Comme le joueur 1 est attaquant, le joueur 2 est attaqué.
            _flotteAttaquee = _flotte2;            
            //Donner le signal d'attaquer au premier jouer                                      //Suivi des communications au comServeur...
            _comVersClient.EnvoyerMessage(_attaquant, "Attaque");                                   //envoyer  "attaque"
        }
 public MainFrame()
 {
     InitializeComponent();
     InitTheGrid(DGV_MaGrille);
     InitTheGrid(DGV_GrilleEnemi);
     maFlotte = new Flotte();
     debutPlacerFlotte();
 }
 //Constructeur
 public Partie()
 {
     //Initialisation des attributs
     //_joueur1 = "Joueur 1";
     //_joueur2 = "Joueur 2";
     _flotte1 = new Flotte();
     _flotte2 = new Flotte();            
     _partieEstFinie = false;
     _tourPremierJoueur = true;
     _comVersClient = new CommunicationServeur("0.0.0.0", 8888);
     _attaquant = 1;
 }
        static void Main(string[] args)
        {
            Flotte maFlotte = new Flotte();

            maFlotte._flotte[0]._pos[0].setPos(1, 1);
            maFlotte._flotte[4]._pos[0].setPos(9, 9);


            Console.WriteLine("Mes navires: ");
            Console.WriteLine(maFlotte);
           /* for (int i = 0; i < 5; ++i)
            {
                Console.WriteLine(maFlotte._flotte[i]);
                //Console.WriteLine(maFlotte._flotte[i]._pos[0]);
            }*/
            
            Console.ReadKey();
        }
 //sert 2 fois au début, pour chaque joueur.
 void placerFlotteSurGrille(Flotte joueur)
 {
     foreach (Navire navire in joueur._flotte)
     {
         //identifier ses positions sur la grille
         foreach (Pos p in navire._pos)
         {
             joueur._grille[p._x, p._y] = navire.getNom();// sera append... avec _touche_coule
         }
     }
 }
        //lorsque le client envoi tous ses bateaux, on recompose l'object flotte avec le String
        Flotte lireFlotte(String flotte)
        {
            Flotte f = new Flotte();

            String listeNav = flotte.Split(':')[1]; // ex: Flotte=Premierbateau=Pos1Pos2;EtLesSuivants....
            List<String> tabNavires = new List<String>(listeNav.Split(';')); // une ligne Premierbateau=Pos1,Pos2 par élément du tableau
            tabNavires.RemoveAt(tabNavires.Count - 1);

            String[] infoNav;  //Une seule ligne du genre Premierbateau=Pos1,Pos2
            String nomNav;     // Premierbateau
            String lisPosNav; // Pos1,Pos2
            int compteNav = 0;
            foreach (String navire in tabNavires)
            {
                infoNav = navire.Split('=');
                nomNav = infoNav[0];
                lisPosNav = infoNav[1];
                String[] tabPos = lisPosNav.Split(',');
                f._flotte[compteNav]._nom = nomNav;
                int comptePos = 0;
                foreach (String coord in tabPos)
                {
                    Pos p = stringToPos(coord);

                    f._flotte[compteNav]._pos[comptePos] = p;
                    f._grille[p._x, p._y] = nomNav;
                    ++comptePos;
                }
                ++compteNav;
            }
            return f;
        }
 //Vérifier si tous les navires sont coulés
 bool PartieEstTerminee(Flotte flotte)
 {
     bool estTerminee = true;
     for (int n = 0; n < flotte._flotte.Length && estTerminee == true; ++n)
     {
         if (flotte._flotte[n]._estCoule == false)
         {
             estTerminee = false;
         }
     }
     return estTerminee;
 }
 //Alterne la flotte attaqué, le numéro du joueur attaquant et le booléen de tour
 void alternerJoueur()
 {
     if (_attaquant == 1)
     {
         _attaquant = 2;
     }
     else
     {
         _attaquant = 1;
     }
     _tourPremierJoueur = !_tourPremierJoueur;
     //changer la flotte attaquee
     _flotteAttaquee = accesFlotteAttaquee();
 }