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; } } }
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(); }
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); } }