Пример #1
0
        /// <summary>
        /// Z XML znova vytvoří objekt
        /// </summary>
        /// <param name="aZprava"></param>
        /// <returns></returns>
        public static Zprava Deserializuj(string aZprava)
        {
            StringReader  sw  = new StringReader(aZprava);
            XmlSerializer ser = new XmlSerializer(typeof(Zprava));
            Zprava        z   = (Zprava)ser.Deserialize(sw);

            return(z);
        }
Пример #2
0
        /// <summary>
        /// Obejkt vloží do XML
        /// </summary>
        /// <param name="aZprava"></param>
        /// <returns></returns>
        public static string Serializuj(Zprava aZprava)
        {
            Utf8StringWriter sw  = new Utf8StringWriter();
            XmlSerializer    ser = new XmlSerializer(typeof(Zprava));

            ser.Serialize(sw, aZprava);
            return(sw.ToString().Replace(System.Environment.NewLine, ""));
        }
Пример #3
0
        public void PosliZpravu(Zprava aZprava)
        {
            XmlSerializer s = new XmlSerializer(typeof(Zprava));

            //převede zprávu do XML a odešle
            odesilac.WriteLine(Serializuj(aZprava));
            //po odeslání se vyčistí
            odesilac.Flush();
        }
Пример #4
0
 public void PrijmiZpravu()
 {
     while (Pripojeno)
     {
         //přijme zprávu v XML
         string zpravaStr = prijimac.ReadLine();
         //vytvoří z XML objekt
         Zprava z = Deserializuj(zpravaStr);
         //vybere zpracovávač podle tpu zprávy a zpracuje zprávu
         ZpracovavacFactory.VratZpracovavac(z, this).ZpracujZpravu(z);
     }
 }
Пример #5
0
        public void NovyServer(bool aJeBily)
        {
            //nastavý barvu kamenů serveru
            JeHracBily     = aJeBily;
            KlientOrServer = true;
            IPHostEntry host = Dns.GetHostEntry("localhost");
            IPAddress   ip   = new IPAddress(host.AddressList.First().GetAddressBytes());

            Server = new TcpListener(ip, 2000);
            //spustí server
            Server.Start();
            bool bezi = true;

            //nastavý timer a obsluhu ticku
            timeoutTimer          = new System.Windows.Forms.Timer();
            timeoutTimer.Interval = 30000;
            timeoutTimer.Tick    += timeoutTimer_Tick;

            while (bezi)
            {
                if (Server.Pending())
                {
                    Socket socket = Server.AcceptSocket();
                    Stream stream = new NetworkStream(socket);
                    prijimac  = new StreamReader(stream);
                    odesilac  = new StreamWriter(stream);
                    Pripojeno = true;
                    new Thread(PrijmiZpravu).Start();
                    //odešle zprávu klientovi o jeho barvě
                    Zprava zprava = new Zprava();
                    zprava.TypZpravy = TypZpravyEnum.ZpracovavacBarva;
                    zprava.Parametry.Add(new ParametrZpravy("Barva", aJeBily.ToString()));
                    PosliZpravu(zprava);
                    //když může hrát spustí se timer který určuje časový limit na tah
                    if (MuzeHrat)
                    {
                        SpustTimer();
                    }
                    bezi = false;
                }
            }
        }
Пример #6
0
        private void KlientOrServerKlik(MouseEventArgs aE)
        {
            VycetTypuKamene kamen    = JeHracBily ? VycetTypuKamene.Bily : VycetTypuKamene.Cerny;
            int             kamenInt = JeHracBily ? 2 : 1;

            if (hraciPole.MoznostPolozeni(aE.Location.X / hraciPole.cellSize, aE.Location.Y / hraciPole.cellSize, kamenInt))
            {
                Zvuk();
                hraciPole.hrajeCerny = !hraciPole.hrajeCerny;
                hraciPole.UlozDoPole(aE.Location.X / hraciPole.cellSize, aE.Location.Y / hraciPole.cellSize, kamen);
                hraciPole.PrepisKameny(aE.Location.X / hraciPole.cellSize, aE.Location.Y / hraciPole.cellSize, kamenInt);

                VyvolejUdalost(PoZmeneHracihoPole);

                Zprava z = new Zprava();
                z.TypZpravy = TypZpravyEnum.ZpracovavacNovePoziceKamene;
                z.Parametry.Add(new ParametrZpravy("X", aE.X.ToString()));
                z.Parametry.Add(new ParametrZpravy("Y", aE.Y.ToString()));
                PosliZpravu(z);
                timeoutTimer.Stop();
            }
        }