//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; }
/// <summary> /// Connection au serveur /// </summary> /// <param name="joueurConnecte"></param> /// <param name="adresseServeur"></param> /// <param name="serveur"></param> /// <param name="commServeur"></param> /// <returns></returns> private static ResultatConnection ConnecterServeur(Joueur joueurConnecte, string adresseServeur, out IServeur serveur, out CommunicationServeur commServeur) { // Connection ResultatConnection res = null; commServeur = null; serveur = null; try { commServeur = new CommunicationServeur(); serveur = DuplexChannelFactory <IServeur> .CreateChannel(new InstanceContext(commServeur), new NetTcpBinding(SecurityMode.None), new EndpointAddress(adresseServeur)); res = serveur.Connecter(joueurConnecte); } catch (Exception ex) { Debug.WriteLine("Erreur lors de la connection : " + ex.Message); } return(res); }
public static void Main(params string[] args) { Program monApp = new Program(); monApp.ShutdownMode = ShutdownMode.OnExplicitShutdown; try { // On boucle tant que l'utilisateur n'a pas cliqué sur "Annuler" ou qu'il n'a pas réussi à se connecter bool clicAnnuler = false; InfosEcranConnexion infos = null; while (!clicAnnuler) { // 1er chargement : on récupère la sauvegarde et on applique la ligne de commande // 2ème chargement : Les infos ont déjà été récupérées par la fenetre de connexion if (infos == null) { infos = RecupererInfosConnexion(); infos = TraiterLigneCommande(infos, args); } DemarrageApplication formDemarrage = new DemarrageApplication(infos); clicAnnuler = !(bool)formDemarrage.ShowDialog(); if (!clicAnnuler) { infos = new InfosEcranConnexion(formDemarrage.NomJoueur, formDemarrage.AdresseServeur, formDemarrage.Langue, formDemarrage.EstServeur, formDemarrage.EstSpectateur, infos.ListeServeurs); infos.ModeLancementClient = formDemarrage.EstClientEnModeLecture ? ModeClient.LecturePartie : ModeClient.Jeu; infos.EstSpectateur = formDemarrage.EstSpectateur; if (infos.ListeServeurs == null) { infos.ListeServeurs = new List <String>(); } if (infos.ListeServeurs.Contains(infos.AdresseServeur)) { // Une seule instance de l'adresse déjà choisie infos.ListeServeurs.Remove(infos.AdresseServeur); } infos.ListeServeurs.Insert(0, infos.AdresseServeur); Joueur joueurConnecte = new Joueur(infos.NomJoueur); joueurConnecte.EstSpectateur = infos.EstSpectateur; // On considére que le serveur est démarré si on rejoint une partie bool serveurDemarre = true; // Démarrage du serveur if (infos.EstServeur && infos.ModeLancementClient == ModeClient.Jeu) { serveurDemarre = Serveur.DemarrerServeur(string.Format(ADRESSE_SERVEUR, "localhost")); if (!serveurDemarre) { MessageBox.Show(OutilsTraduction.Traducteur.Traduire("ErreurDemarrageServeur"), Constantes.NOM_APPLICATION, MessageBoxButton.OK, MessageBoxImage.Error); } } if (serveurDemarre) { // Démarrage du client IServeur serveur = null; CommunicationServeur comm = null; ResultatConnection res; if (infos.ModeLancementClient == ModeClient.Jeu) { res = ConnecterServeur(joueurConnecte, string.Format(ADRESSE_SERVEUR, infos.AdresseServeur), out serveur, out comm); } else { res = new ResultatConnection(RetourConnection.Ok); } if (res != null) { if (res.Connection == RetourConnection.Ok) { try { SauvegarderInfosConnexion(infos); clicAnnuler = true; TablePoker table = new TablePoker(joueurConnecte, comm, serveur, res, formDemarrage.TraducteurChoisi, infos.ModeLancementClient); monApp.Run(table); } catch (Exception ex) { MessageBox.Show(formDemarrage.TraducteurChoisi.Traduire("ErreurApplication") + ex.Message, Constantes.NOM_APPLICATION, MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show(formDemarrage.TraducteurChoisi.Traduire("ErreurConnection" + res.Connection.ToString()), Constantes.NOM_APPLICATION, MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show(formDemarrage.TraducteurChoisi.Traduire("ErreurConnection"), Constantes.NOM_APPLICATION, MessageBoxButton.OK, MessageBoxImage.Error); } } } } } catch (Exception ex) { MessageBox.Show("Erreur de l'application : " + ex.Message, Constantes.NOM_APPLICATION, MessageBoxButton.OK, MessageBoxImage.Error); } }