Ejemplo n.º 1
0
        public void ReceiveData1()
        {
            try
            {
                SocketClient1 = SocketServer.Accept();                            // socket1 ,ожидает клиента
                SocketClient1.Send(Encoding.Default.GetBytes("`joinSuccess,0,")); //шлет клиенту
                log_LB.Items.Add("p0:joinSuccess,0,");                            // лог что подсоединился игрок

                try
                {
                    do
                    {
                        if (SocketClient1.Receive(data1) > 0)                           //checking received data != 0
                        {
                            string[] commands = Encoding.Default.GetString(data1).Trim().Split('`');
                            Array.Clear(data1, 0, data1.Length);
                            for (int i = 1; i < commands.Length; i++)
                            {
                                log_LB.Items.Add("p0:" + commands[i]);
                                string[] line = commands[i].Split(',');

                                if (line[0] == "color")
                                {
                                    int temp = int.Parse(line[1]);
                                    if (p1.SnackColor == temp)
                                    {
                                        SocketClient1.Send(Encoding.Default.GetBytes("`color,false,"));
                                        log_LB.Items.Add("p0:color,false");
                                    }
                                    else
                                    {
                                        SocketClient1.Send(Encoding.Default.GetBytes("`color,true,"));
                                        log_LB.Items.Add("p0:color,true");
                                        p0.SnackColor = temp;
                                    }
                                }
                                else if (line[0] == "ready")
                                {
                                    p0r = true;
                                    if (p0r && p1r)
                                    {
                                        SocketClient1.Send(Encoding.Default.GetBytes("`colorset," + p1.SnackColor + ","));
                                        SocketClient2.Send(Encoding.Default.GetBytes("`colorset," + p0.SnackColor + ","));
                                        start = true;
                                    }
                                }
                                else if (line[0] == "way")
                                {
                                    if (line[1] == "w")
                                    {
                                        ChangeWay(p0, Player.Way.Up);
                                    }
                                    else if (line[1] == "a")
                                    {
                                        ChangeWay(p0, Player.Way.Left);
                                    }
                                    else if (line[1] == "s")
                                    {
                                        ChangeWay(p0, Player.Way.Down);
                                    }
                                    else if (line[1] == "d")
                                    {
                                        ChangeWay(p0, Player.Way.Right);
                                    }
                                }
                            }
                        }
                        else
                        {
                            SocketClient1.Close();
                            SocketClient2.Close();
                            SocketServer.Close();
                            IsConnected = false;
                            log_LB.Items.Add("server close");
                        }
                    } while (true);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }