/// <summary>
        /// Fonction principale pour jouer
        /// </summary>
        public void Run()
        {
            try
            {
                if (_nouvellePartie)
                {
                    // Envoie au 2 joueurs que les 2 sont connectés pour pouvoir poursuivre avec le jeux
                    envoyerReponse("Joueur 1 et Joueur 2 connectés", joueur1);
                    envoyerReponse("Joueur 1 et Joueur 2 connectés", joueur2);
                }
                // Recoit la position des bateaux de chaque joueur et l'affecte à une variable globale
                flotteJ1 = recevoirPositionBateaux(joueur1);
                flotteJ2 = recevoirPositionBateaux(joueur2);

                // Envoie de l'ordre de jeu des joueurs ainsi que l'ip de son opposant
                envoyerReponse("1 " + (joueur2.RemoteEndPoint as IPEndPoint).Address, joueur1);
                envoyerReponse("2 " + (joueur1.RemoteEndPoint as IPEndPoint).Address, joueur2);

                // Boucle du jeu
                while (joueur1.Connected && joueur2.Connected && flotteJ1.FlotteEstVivante() && flotteJ2.FlotteEstVivante() && BattleShip_Serveur.Program.SocketEstConnecte(joueur1) && BattleShip_Serveur.Program.SocketEstConnecte(joueur2))
                {
                        envoyerReponse(analyserAttaque(recevoirAttaque(joueur1), flotteJ2.flotte));
                        if (flotteJ2.FlotteEstVivante())
                        {
                            envoyerReponse(analyserAttaque(recevoirAttaque(joueur2), flotteJ1.flotte));
                        }
                    }
                    if (estNouvellePartie(joueur1))
                    {
                        _joueur1NouvellePartie = true;
                    }
                    if (_joueur1NouvellePartie && estNouvellePartie(joueur2))
                    {
                        _nouvellePartie = false;
                        Run();
                    }
                    else
                    {
                        if (!_joueur1NouvellePartie)
                        {
                            envoyerReponse("Joueur 1 s'est déconnecté", joueur2);
                        }
                        else
                        {
                            envoyerReponse("Joueur 2 s'est déconnecté", joueur1);
                        }
                        // lorsque la partie est terminée, on termine la connection
                        Console.WriteLine("Le joueur1 (" + (joueur1.RemoteEndPoint as IPEndPoint).Address.ToString() + ") est déconnecté");
                        joueur1.Close();
                        Console.WriteLine("Le joueur2 (" + (joueur2.RemoteEndPoint as IPEndPoint).Address.ToString() + ") est déconnecté");
                        joueur2.Close();
                    }
            }
            catch (SocketException a)
            {
                joueur1.Dispose();
                joueur2.Dispose();
            }
            catch (Exception e)
            {
                // Console.WriteLine(e.Message);
            }
        }