Ejemplo n.º 1
0
        /// <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
                }
            }
Ejemplo n.º 2
0
 /// <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);
     }
 }
Ejemplo n.º 3
0
 /// <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);
     }
 }
Ejemplo n.º 4
0
        /// <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);
            }
        }
Ejemplo n.º 5
0
 /// <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;
 }