/// <summary>Rejoint une partie.</summary> /// <param name="nom">Nom du client.</param> /// <param name="ip">Adresse IP de l'hôte.</param> public Partie(string nom, IPAddress ip) { reseau = new Reseau(ip); Partie hote = reseau.ObtenirPartie(); // Obtient les informations de la partie de l'hôte sabot = hote.sabot; participants = hote.participants; initial = hote.initial; min = hote.min; salon = new Salon(this); local = Compte; // Ajoute les joueurs déjà reçus par l'hôte foreach (Joueur joueur in participants) { salon.AjouterJoueur(joueur); } Joueur client = new Joueur(nom, initial); AjouterJoueur(client); reseau.EnvoyerJoueur(client); if (Compte < Nombre) { new Thread(AttendreJoueur) { IsBackground = true } }
/// <summary>Permet de joindre une partie existante tout en vérifiant son existence et sa validité .</summary> public void JoindrePartie() { try { Partie partie = new Partie(menuPrincipal.EntreeNomClient, menuPrincipal.EntreeIPAdresse); partie.Afficher(); } catch (FormatException) { MenuPrincipal.AdresseIPFormatInvalide(); } catch (SocketException) { MenuPrincipal.AdresseIPHoteIntrouvable(); } catch (Exception ex) { MenuPrincipal.AfficherErreur(ex.Message); } }
/// <summary>Créer l'instance d'une partie en s'assurant de la validité de ses paramètres via différentes closes catch respectives</summary> public void CreerPartie() { try { Partie partie = new Partie(menuPrincipal.EntreeNomHote, menuPrincipal.EntreeNBjoueurs, menuPrincipal.EntreeInitial, menuPrincipal.EntreeMin, menuPrincipal.EntreeBot); partie.Afficher(); } catch (FormatException) { MenuPrincipal.AdresseIPFormatInvalide(); } catch (SocketException) { MenuPrincipal.HebergementInvalide(); } catch (Exception ex) { MenuPrincipal.AfficherErreur(ex.Message); } }
/// <summary>Obtient une connexion distante et envoie les informations de la partie à celle-ci.</summary> /// <param name="partie">Partie à envoyer.</param> /// <exception cref="SocketException">Exception levée lorsqu'aucune connexion est obtenue.</exception> public void ObtenirConnexion(Partie partie) { Socket client = tcpListener.AcceptSocket(); if (client.Connected) { NetworkStream fluxReseau = new NetworkStream(client); fluxReseau.ReadTimeout = fluxReseau.WriteTimeout = 20000; // Fixe la limite du délai de réponses reseaux.Add(fluxReseau); lectures.Add(new StreamReader(fluxReseau)); ecritures.Add(new StreamWriter(fluxReseau)); formatteur.Serialize(fluxReseau, partie); } }
/// <summary>Crée un salon de jeu.</summary> /// <param name="partie">Partie associée à ce salon de jeu.</param> public Salon(Partie partie) { InitializeComponent(); this.partie = partie; }