示例#1
0
        private void AtenderServidor()
        {
            while (true)
            {
                //Recibimos la respuesta del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string       mensajerecibido = Encoding.ASCII.GetString(msg2);
                string[]     trozos          = Encoding.ASCII.GetString(msg2).Split('/');
                int          codigo          = Convert.ToInt32(trozos[0]);
                string       mensaje         = trozos[1].Split('\0')[0];
                string       mensaje2;
                DialogResult result;
                switch (codigo)

                {
                case 1:
                    if (mensaje == "SI")
                    {
                        MessageBox.Show("El usuario: " + Username.Text + ", se ha registrado correctamente.");
                    }
                    else
                    {
                        MessageBox.Show("El usuario: " + Username.Text + ", ya está cogido.");
                    }
                    break;


                case 2:
                    mensaje2 = trozos[2].Split('\0')[0];

                    if (mensaje == "SI")
                    {
                        if (mensaje2 == "El usuario: " + Username.Text + ", se ha anadido correctamente a la lista")
                        {
                            MessageBox.Show(mensaje2);
                            registered = true;
                            //DelegadoParaAbrirMain delegado1 = new DelegadoParaAbrirMain (AbrirMain);
                            //this.invoke(delegado1, new object [] {Username.Text});
                        }
                        else
                        {
                            MessageBox.Show(mensaje2);
                            registered = false;
                        }
                    }
                    else
                    {
                        MessageBox.Show(mensaje2);
                    }
                    break;

                case 3:
                    MessageBox.Show(mensaje);
                    break;

                case 4:
                    MessageBox.Show(mensaje);
                    break;

                case 5:
                    MessageBox.Show(mensaje);
                    break;

                case 6:
                    //Recibimos notificación
                    int nm = Convert.ToInt32(mensaje);
                    if (nm != 0)
                    {
                        ListaConectados.Rows.Clear();
                        NumConn.Text = mensaje;
                        int i;
                        for (i = 2; i < nm + 2; i++)
                        {
                            mensaje2 = trozos[i].Split('\0')[0];
                            DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonTabla);
                            ListaConectados.Invoke(delegado, new object [] { mensaje2 });
                        }
                        ListaConectados.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
                    }
                    else
                    {
                        NumConn.Text = "0";
                    }
                    break;

                case 7:
                    int id = Convert.ToInt32(mensaje);
                    mensaje2 = trozos[2].Split('\0')[0];
                    if (id != -1)
                    {
                        result = (MessageBox.Show("Hola, " + Username.Text + ": " + mensaje2 + " te ha invitado a jugar a la partida " + id + ", ¿aceptas?", "aceptar", MessageBoxButtons.YesNo));
                        switch (result)
                        {
                        case DialogResult.Yes:
                            string envio = "8/" + mensaje + "/SI";
                            // Enviamos al servidor el username y password tecleadas.
                            byte[] msg = System.Text.Encoding.ASCII.GetBytes(envio);
                            server.Send(msg);
                            break;

                        case DialogResult.No:
                            envio = "8/" + mensaje + "/NO";
                            // Enviamos al servidor el username y password tecleadas.
                            msg = System.Text.Encoding.ASCII.GetBytes(envio);
                            server.Send(msg);
                            break;
                        }
                    }
                    else
                    {
                        MessageBox.Show(mensaje2);
                    }
                    break;

                case 8:
                    id       = Convert.ToInt32(mensaje);
                    ID       = id;
                    mensaje2 = trozos[2].Split('\0')[0];
                    string mensaje3 = trozos[3].Split('\0')[0];
                    if (mensaje3 == "SI")
                    {
                        MessageBox.Show(mensaje2 + " ha aceptado a jugar la partida " + id);
                        cont   = cont + 1;
                        juegan = juegan + 1;
                    }
                    else
                    {
                        MessageBox.Show(mensaje3);
                        cont = cont + 1;
                    }



                    if (cont == contador)
                    {
                        invited  = true;
                        contador = 0;
                        cont     = 0;
                    }
                    break;

                case 9:
                    autor    = mensaje;
                    mensaje2 = trozos[2].Split('\0')[0];
                    RecibirChat(autor, mensaje2);
                    break;

                case 10:
                    //Recibimos notificación
                    int n = Convert.ToInt32(mensaje);      //recibimos el numero de partidas disponibles

                    if (n != 0)
                    {
                        ListaPartidas.Rows.Clear();
                        partidasBox.Text = mensaje;
                        int i;
                        for (i = 2; i < n + 2; i++)
                        {
                            mensaje2 = trozos[i].Split('\0')[0];
                            DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonTabla2);
                            ListaPartidas.Invoke(delegado, new object[] { mensaje2 });
                        }
                        ListaPartidas.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
                    }
                    else
                    {
                        partidasBox.Text = "0";
                    }
                    break;
                }
            }
        }
示例#2
0
        public void AtenderServidor()
        {
            while (true)
            {
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                //Limpiar el mensaje de basura
                string    mensaje   = Encoding.ASCII.GetString(msg2).Split('\0')[0];
                string [] respuesta = mensaje.Split('/');
                int       codigo    = Convert.ToInt32(respuesta[0]);

                switch (codigo)
                {
                case 0:
                    mensaje = respuesta[1];
                    lblconexion.ForeColor = Color.Black;
                    DelegadoModificarPerfil delegadoModificarPerfil = new DelegadoModificarPerfil(ModificarDatosPerfil);
                    Invoke(delegadoModificarPerfil, new object[] { respuesta });
                    //lblconexion.Text = mensaje;
                    atender.Abort();
                    break;

                case 1:
                    mensaje = respuesta[1];
                    if (mensaje == "err")         // En caso de querer registrarse con un usuario ya existente
                    {
                        MessageBox.Show("Este usuario ya existe!");
                        A = 0;
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                        atender.Abort();
                    }
                    else
                    {
                        RegisterCheck = true;
                        MessageBox.Show(mensaje + " se ha registrado correctamente, Ahora inicie sesión!");
                    }
                    break;

                case 2:
                    mensaje = respuesta[1];
                    if (mensaje == "err1")         // En caso de querer iniciar sesión con un usuario no existente
                    {
                        A = 0;
                        MessageBox.Show("Este usuario no existe!");
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                        atender.Abort();
                    }
                    else if (mensaje == "err2")         // Si ya se ha iniciado sesión con esa cuenta
                    {
                        A = 0;
                        MessageBox.Show("Este usuario ya ha iniciado sesion");
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                        atender.Abort();
                    }
                    else
                    {
                        MessageBox.Show(mensaje + " ha iniciado sesión correctamente");
                        //lblconexion.Text = "Conectado";
                        delegadoModificarPerfil = new DelegadoModificarPerfil(ModificarDatosPerfil);
                        Invoke(delegadoModificarPerfil, new object[] { respuesta });
                        btnRegistrarse.Invoke(new DelegadoRegistrarVisible(PonInvisible), new object[] { "btnRegistrarse" });
                        lblconexion.ForeColor = Color.Green;
                    }
                    break;

                case 3:
                    mensaje = respuesta[1];
                    if (mensaje == "err3")           // Error al eliminar un usuario inexistente
                    {
                        A = 0;
                        MessageBox.Show("Este usuario no existe!");
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                        atender.Abort();
                    }
                    else
                    {
                        MessageBox.Show(mensaje + " se ha dado de baja correctamente");
                    }
                    break;

                case 4:
                    mensaje = respuesta[1];
                    DelegadoRegistrarVisible delegadoModificarPeticion2 = new DelegadoRegistrarVisible(Peticion2);
                    peticion2Lbl.Invoke(delegadoModificarPeticion2, new object[] { mensaje });
                    break;

                case 5:
                    mensaje = respuesta[1];
                    DelegadoRegistrarVisible delegadoModificarPeticion = new DelegadoRegistrarVisible(Peticion1);
                    peticion1Lbl.Invoke(delegadoModificarPeticion, new object[] { mensaje });

                    break;

                case 6:
                    //ListaConectados.Rows.Clear();
                    int numConectados             = Convert.ToInt32(respuesta[1]);
                    DelegadoDataGridView delegado = new DelegadoDataGridView(LimpiarDatagrid);
                    ListaConectados.Invoke(delegado, new object[] { ListaConectados });
                    int j = 0, k = 2;
                    DelegadoDataGridView2 delegado2 = new DelegadoDataGridView2(AñadirDatagrid);
                    while (j < numConectados)
                    {
                        //ListaConectados.Rows.Add(respuesta[k]);
                        ListaConectados.Invoke(delegado2, new object[] { ListaConectados, respuesta, k });
                        j++;
                        k++;
                    }
                    break;

                case 7:
                    //Llega una invitación, mostramos el mensaje al usuario.
                    int        IdPartida            = Convert.ToInt32(respuesta[1]);
                    string     host                 = respuesta[2];
                    Invitacion invitacion           = new Invitacion(IdPartida, host);
                    invitacion.ShowDialog();
                    break;

                case 8:
                    IdPartida = Convert.ToInt32(respuesta[1]);
                    int         numParticipantes = Convert.ToInt32(respuesta[2]);
                    string      nombre           = respuesta[3];
                    ThreadStart ts = delegate { crearPartida(IdPartida, numParticipantes, nombre); };
                    T = new Thread(ts);
                    T.Start();
                    break;

                case 9:
                    IdPartida = Convert.ToInt32(respuesta[2]);
                    partidas[IdPartida].tomaRespuesta(respuesta);
                    break;

                case 10:
                    MessageBox.Show("La partida esta llena");
                    break;

                case 11:
                    IdPartida = Convert.ToInt32(respuesta[1]);
                    partidas[IdPartida].configurarPartida(Convert.ToInt32(respuesta[2]));
                    break;

                case 12:
                    //Recibimos la ID de las cartas repartidas
                    IdPartida = Convert.ToInt32(respuesta[1]);
                    int numjugadores = Convert.ToInt32(respuesta[2]);
                    int numCartas    = Convert.ToInt32(respuesta[3]);

                    int[] IdCarta = new int[10];
                    int   n       = 0;
                    int   m       = 4;
                    while (n < numCartas)
                    {
                        IdCarta[n] = Convert.ToInt32(respuesta[m]);
                        n++;
                        m++;
                    }
                    if (numCartas != 0)
                    {
                        ts = delegate { crearMano(IdCarta, numCartas, IdPartida, numjugadores); };
                        T  = new Thread(ts);
                        T.Start();
                        SoundPlayer simpleSound = new SoundPlayer(@"repartir.wav");
                        simpleSound.Play();
                    }
                    else
                    {
                        partidas[IdPartida].AsignarPuntuacionRonda(numjugadores);
                    }



                    break;

                case 13:

                    IdPartida = Convert.ToInt32(respuesta[1]);

                    partidas[IdPartida].tomaRespuesta(respuesta);

                    break;

                case 14:

                    IdPartida = Convert.ToInt32(respuesta[1]);
                    partidas[IdPartida].tomaRespuesta(respuesta);
                    break;

                case 15:
                    IdPartida = Convert.ToInt32(respuesta[1]);
                    partidas[IdPartida].VaciarTabla();
                    break;

                case 16:
                    IdPartida = Convert.ToInt32(respuesta[1]);
                    partidas[IdPartida].EscribirPuntuacion(respuesta);
                    break;

                case 17:
                    IdPartida = Convert.ToInt32(respuesta[1]);

                    partidas[IdPartida].tomaRespuesta(respuesta);
                    break;

                default:
                    break;
                }
            }
        }