public void Connect(Form1 form1)
        {
            client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            client.Connect("127.0.0.1", 9090);
            //MessageBox.Show("Povezan");
            stream    = new NetworkStream(client);
            formatter = new BinaryFormatter();
            ZahtevOdKlijenta zahtev = new ZahtevOdKlijenta {
                KorisnickoIme = form1.TxtKorisnickoIme.Text
            };

            formatter.Serialize(stream, zahtev);
            OdgovorServera odgovor = (OdgovorServera)formatter.Deserialize(stream);

            if (odgovor.Signal == Signal.ImeZauzeto)
            {
                client.Close();
                MessageBox.Show("Navedeno ime postoji. Prekinuta veza sa serverom");
            }
            else
            {
                MessageBox.Show("Uspesno uspostavljena veza sa serverom");
                OdgovorServera odgovorZaPocetakIgre = (OdgovorServera)formatter.Deserialize(stream);
                if (odgovorZaPocetakIgre.Signal == Signal.SpremnoZaPocetak)
                {
                    form1.panelBrojDva.Enabled = true;
                }
            }
        }
Esempio n. 2
0
        private void ProglasiPobednika(List <Igrac> listaIgraca, Igra igra)
        {
            double max = 0;

            max = listaIgraca.Max(m => m.BrojPoena);
            Igrac pobednik = new Igrac();

            foreach (Igrac igrac in listaIgraca)
            {
                if (igrac.BrojPoena == max)
                {
                    pobednik = igrac;
                    break;
                }
            }
            igra.DatumVremeKraja = DateTime.Now;
            OdgovorServera odgovor = new OdgovorServera();

            odgovor.Pobednik = $"Pobednik je {pobednik.KorisnickoIme} sa {pobednik.BrojPoena} poena";
            odgovor.Signal   = Signal.ImamoPobednika;
            foreach (Igrac klijent in listaIgraca)
            {
                NetworkStream   stream    = new NetworkStream(klijent.serverskiSocketIgraca);
                BinaryFormatter formatter = new BinaryFormatter();
                formatter.Serialize(stream, odgovor);
            }
        }
        // zahtev za prijavu

        private bool PrijavaIgraca(Igrac noviIgrac, List <Igrac> igraci)
        {
            stream    = new NetworkStream(noviIgrac.serverskiSocketIgraca);
            formatter = new BinaryFormatter();
            ZahtevOdKlijenta zahtev = (ZahtevOdKlijenta)formatter.Deserialize(stream);

            // MessageBox.Show($"Poslato korisnicko ime {zahtev.KorisnickoIme}");
            noviIgrac.KorisnickoIme = zahtev.KorisnickoIme;
            OdgovorServera odgovor = new OdgovorServera();

            if (!igraci.Any(i => i.KorisnickoIme == noviIgrac.KorisnickoIme))
            {
                odgovor.Signal = Signal.Ok;
                igraci.Add(noviIgrac);
                Sesija.Instance.listaPlayera.Add(noviIgrac);
                IzmenjenRezultat();
                formatter.Serialize(stream, odgovor);
                return(true);
            }
            else
            {
                odgovor.Signal = Signal.ImeZauzeto;
                formatter.Serialize(stream, odgovor);
                return(false);
            }
        }
        public void Start(Igra i, int brojIgraca, Form frmServer)
        {
            List <Igrac> igraci = new List <Igrac>();

            while (brojIgraca > 0)
            {
                Socket socket    = listener.Accept();
                Igrac  noviIgrac = new Igrac {
                    serverskiSocketIgraca = socket
                };
                if (PrijavaIgraca(noviIgrac, igraci))
                {
                    brojIgraca--;
                }
            }
            // OdgovorServera odgovor = new OdgovorServera { Signal. };
            foreach (Igrac player in Sesija.Instance.listaPlayera)
            {
                OdgovorServera odgovor = new OdgovorServera {
                    Signal = Signal.SpremnoZaPocetak
                };
                stream = new NetworkStream(player.serverskiSocketIgraca);
                formatter.Serialize(stream, odgovor);
            }
            Kontroller.Instance.PromenaVremenaPocetkIgre(i);
            MessageBox.Show("Igra moze da pocne.");
            ObradaRunde runda = new ObradaRunde(igraci, i, this);

            runda.ZapocniIgru();
        }
Esempio n. 5
0
 private void IgraZaJednogIgraca(Igrac i)
 {
     try
     {
         NetworkStream   stream    = new NetworkStream(i.serverskiSocketIgraca);
         BinaryFormatter formatter = new BinaryFormatter();
         foreach (Pitanje p in igra.ListaPitanja)
         {
             OdgovorServera odgovor = new OdgovorServera {
                 TeksPitanja = p.PitanjeTekst
             };
             formatter.Serialize(stream, odgovor);
             ZahtevOdKlijenta poruka        = (ZahtevOdKlijenta)formatter.Deserialize(stream);
             OdgovorServera   odg           = new OdgovorServera();
             bool             tacanOdogovor = (poruka.Odgovor == p.TacanOdgovor);
             if (tacanOdogovor && !p.Odgovoreno)
             {
                 i.BrojPoena += p.BrojPoena;
                 odg.Poeni    = i.BrojPoena;
                 i.BrojTacnihOdgovora++;
                 p.Odgovoreno = true;
                 p.Odgvorio   = i.KorisnickoIme;
                 odg.Poruka   = $"Tacan odgovor ({p.BrojPoena})";
             }
             else if (tacanOdogovor && p.Odgovoreno)
             {
                 odg.Poruka = $"Tacan odgovor, ali je prvo odgovorio {p.Odgvorio} ({0})";
                 odg.Poeni  = i.BrojPoena;
             }
             else
             {
                 i.BrojPoena -= p.BrojPoena * 0.1;
                 odg.Poeni    = i.BrojPoena;
                 i.BrojNetacnihOdgovora++;
                 odg.Poruka = $"Netacan odgovor ({p.BrojPoena*-0.1})";
             }
             server.IzmenjenRezultat();
             formatter.Serialize(stream, odg);
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message);
     }
 }