Witam. Mam następujący problem. Piszę sobie grę "Okręty" w trybie sieciowym. Działa to tak :

  • użytkownik strzela : wysyłana jest wiadomość do odbiorcy i sprawdzenie czy użytkownik trafił. Jeżeli trafił
    to zwracana jest informacja do strzelającego o sukcesie.
    W kodzie wygląda to tak:
public void strzelaj(int tx, int ty) // rejestruje strzał gracza
        {
            if (czy_mina[tx, ty] == false) // jeżeli nie strzelano w to miejsce
            {
                    siec.WyslijRuch(tx, ty);
                    shootmap[tx, ty].BackgroundImage = mina;
                    weryfikuj(tx, ty); // odbiera informacje czy statek zostal trafiony
                    
            }
            else
            {
                MessageBox.Show("Nie możesz strzelać 2 razy w te samo miejsce", "Statki");
                return;
            }
public void przyjmij_strzal(int tx, int ty) // pokazuje strzał przecwnika na drugiej planszy
        {
            if (czy_statek[tx, ty] == true)
            {
                mapa[tx, ty].BackgroundImage = trafiony;
               siec.WyslijInfoStatku(tx, ty); // wysyla informacje o tym że statek zostal trafiony
                        
            }
            else
            {
                mapa[tx, ty].BackgroundImage = mina;
            }
            gra_sieciowa = false;
        }
public void weryfikuj(int tx, int ty) 
        {
                shootmap[tx, ty].BackgroundImage = trafiony;
              
        }

Problem polega na tym, że metoda Weryfikuj pokazuje swoje wyniki na wszystkich planszach oraz oraz aplikacji serwera i klienta. Nie wiem dlaczego tak się dzieje ? Za każdą pomoc wielkie dzięki.

Umieszczam jeszcze metody sieciowe umożliwiające wysyłanie danych :

Metoda odbiera dane:

try
            {
                byte[] tab = new byte[512];
                IPHostEntry HostEntry = Dns.GetHostEntry(Dns.GetHostName());
                int otrzymane_bajty = 0;

                tcpListener = new TcpListener(HostEntry.AddressList[0], port);
                tcpListener.Start();

                socket = tcpListener.AcceptSocket();

                server_ns = new NetworkStream(socket);
                // metoda na restart gry
                gra.Ustaw_StatusTekst("Status gry: POŁĄCZONY");

                receiving_server = true;
                while (receiving_server)
                {
                    try
                    {
                        otrzymane_bajty = server_ns.Read(tab,0,2);
                       
                   
                    }
                    catch
                    {
                        return;
                    }
                    if(otrzymane_bajty >0)
                    {
                        int wiersz = int.Parse(Convert.ToChar(tab[0]).ToString());
                        int kolumna = int.Parse(Convert.ToChar(tab[1]).ToString());
                        gra.weryfikuj(wiersz, kolumna);
                        gra.przyjmij_strzal(wiersz, kolumna);
                   
                    }

Metody wysyłające dane:

public void WyslijRuch(int wiersz, int kolumna) // metoda zapisująca wspołrzedne do tablicy, które beda wysłane
        {
            byte [] tab = new byte[2];
            tab[0]=byte.Parse(Asc(wiersz.ToString()).ToString());
			tab[1]=byte.Parse(Asc(kolumna.ToString()).ToString());
        
            WyslijPakiet(tab);
        }