Exemplo n.º 1
0
 public void ObtenirConectatsResposta(string missatge)
 {
     try
     {
         DelegadoParaEscribir delegado = new DelegadoParaEscribir(PosaDataGriedView);
         LlistaConectats.Invoke(delegado, new object[] { missatge });
     }
     catch (ArgumentOutOfRangeException)
     {
         MessageBox.Show("El missatge es incorrecte");
     }
     LlistaConectats.ClearSelection();
 }
Exemplo n.º 2
0
        private void EnableLogIn()  //Habilita botones cuando usuario inicia sesion
        {
            DelegadoParaLogIn delegadoLogIn = new DelegadoParaLogIn(LogIn);

            text.Invoke(delegadoLogIn);
            empezar.Invoke(delegadoLogIn);
            AddPlayer.Invoke(delegadoLogIn);
            TextMessage.Invoke(delegadoLogIn);
            nombre.Invoke(delegadoLogIn);
            pass.Invoke(delegadoLogIn);

            //label6.Text = "Has iniciado sesión como: " + conectado;  //Lo quito de aqui por el tema del excepcion cross thread
            DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonNombre);

            label6.Invoke(delegado, new object[] { conectado });

            //mensajes.Items.Add("Has iniciado sesión como : " + conectado);
            DelegadoParaMensajes delegadoMensajes = new DelegadoParaMensajes(PonMensaje);

            mensajes.Invoke(delegadoMensajes, new object[] { conectado });
        }
Exemplo n.º 3
0
        //
        //Función para atender las peticiones del servidor.
        //
        private void AtenderServidor()
        {
            while (true)
            {
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string   mssg    = Encoding.ASCII.GetString(msg2).Split('\0')[0];
                string[] trozos  = mssg.Split('-');
                int      codigo  = Convert.ToInt32(trozos[0]);
                string   mensaje = trozos[1];
                int      cont_f  = formularios.Count;

                switch (codigo)
                {
                case 1:     //LOGIN
                    string[] piezas = mensaje.Split('/');
                    int      code   = Convert.ToInt32(piezas[0]);
                    if (code == 11)
                    {
                        MessageBox.Show("El usuario y la contraseña no coinciden. Por favor intente INCIAR SESIÓN de nuevo.");
                        this.Close();
                    }
                    else
                    {
                        DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonConectado);
                        matriz.Invoke(delegado, new object[] { code, piezas });
                    }
                    break;

                case 2:     //ELIMINAR
                    MessageBox.Show(mensaje);
                    break;

                case 4:     // El usuario invitado recibe la invitacion y envia su respuesta correspondiente

                    string[] msg_form = mensaje.Split('/');
                    forms_s = Convert.ToInt32(msg_form[1]);
                    DialogResult resultado;
                    resultado = MessageBox.Show(msg_form[0] + " te ha enviado una invitación.", "Invitación", MessageBoxButtons.OKCancel);
                    if (resultado == DialogResult.OK)
                    {
                        string message = "5/" + msg_form[0] + "/0";       // + "/" + nform
                        byte[] msg     = System.Text.Encoding.ASCII.GetBytes(message);
                        server.Send(msg);
                    }
                    else
                    {
                        string message = "5/" + msg_form[0] + "/1";
                        byte[] msg     = System.Text.Encoding.ASCII.GetBytes(message);
                        server.Send(msg);
                    }

                    break;

                case 5:     //El usuario que ha invitado recibe si el invitado ha aceptado o no

                    string[] pieces       = mensaje.Split('/');
                    int      codigoAcepta = Convert.ToInt32(pieces[1]);
                    if (codigoAcepta == 0)
                    {
                        MessageBox.Show(pieces[0] + " ha ACEPTADO tu invitación");
                        //invitado = pieces[0];
                    }
                    else
                    {
                        MessageBox.Show(pieces[0] + " ha RECHAZADO tu invitación");
                    }

                    break;

                case 6:     //Recibe los mensajes del chat
                    pieces = mensaje.Split('/');
                    DelegadoParaChat delegadoChat = new DelegadoParaChat(PonMensaje);
                    listBox1.Invoke(delegadoChat, new object[] { pieces });

                    break;

                case 7:     //Pone en marcha los formularios de la partida

                    string[] jugadores = mensaje.Split('/');
                    jug1 = jugadores[0];
                    jug2 = jugadores[1];
                    ThreadStart ts = delegate { PonerEnMarchaFormulario(); };
                    Thread      T  = new Thread(ts);
                    T.Start();

                    break;

                case 8:     //Recibe la tirada y la pone en el tablero del otro jugador

                    string[] jugada  = mensaje.Split('/');
                    int      nform   = Convert.ToInt32(jugada[0]);
                    int      jug     = Convert.ToInt32(jugada[1]);
                    int      fila    = Convert.ToInt32(jugada[2]);
                    int      columna = Convert.ToInt32(jugada[3]);
                    CheckForIllegalCrossThreadCalls = false;
                    formularios[nform].TomaRespuesta(jug, fila, columna);

                    break;

                case 9:     //Recibe el ganador

                    string[] ganadors = mensaje.Split('/');
                    string   ganador  = (ganadors[0]);
                    int      nform_g  = Convert.ToInt32(ganadors[1]);
                    formularios[nform_g].TomaGanador(ganador);

                    break;

                case 10:     //Ver jugadores con los que has jugado
                    EF.PonInvokeJugador(mensaje);
                    break;

                case 11:    //Ver todos los jugadores registrados en la base de datos
                    EF.PonInvokeTodosJugadores(mensaje);
                    break;

                case 12:    //Ver jugadores con quien has jugado
                    EF.PonInvokePartidas(mensaje);
                    break;

                case 13:    //Ver las partidas que ha ganado un determiando jugador
                    EF.PonInvokeGanadas(mensaje);
                    break;
                }
            }
        }
Exemplo n.º 4
0
        private void FormPartida_Load(object sender, EventArgs e)
        {
            DelegadoParaEscribir delegado = new DelegadoParaEscribir(PosaComponentsEquips);

            nomsequip1.Invoke(delegado, new object[] { equip });
        }
Exemplo n.º 5
0
        //////////////////////////////////////// ATENDER SERVER/////////////////////////////////////////////

        public void AtenderServidor()
        {
            while (true)
            {
                //Recibimos mensaje del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string[] trozos = Encoding.ASCII.GetString(msg2).Split('/');

                //if (trozos[0].GetType() == typeof(string))
                //    return;

                //int codigo = Convert.ToInt32(trozos[0]);

                int  codigo;
                bool parse = int.TryParse(trozos[0], out codigo);

                if (!parse)
                {
                    return;
                }

                string mensaje = trozos[1].Split('\0')[0];

                switch (codigo)
                {
                case 1:       // Respuesta a partidas ganadas por un jugador x

                    pg.setrespuesta(mensaje);
                    break;

                case 2:     // Ganadores de partidas de >10min

                    gm = new Ganadores10min();
                    gm.setLista(mensaje);
                    gm.ShowDialog();
                    break;


                case 3:     // Respuesta a la hora y la fecha de una partida

                    hf.setrespuesta(mensaje);
                    break;

                case 4:      // Respuesta a partidas un día x

                    gd.setrespuesta(mensaje);
                    break;

                case 7:     // Respuesta a lista de conectados

                    string[] vector = new string[5];
                    vector = mensaje.Split(',');

                    ShowConectados.RowHeadersVisible           = false;
                    ShowConectados.ColumnHeadersVisible        = false;
                    ShowConectados.AutoSizeColumnsMode         = DataGridViewAutoSizeColumnsMode.AllCells;
                    ShowConectados.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
                    ShowConectados.RowCount    = vector.Length;
                    ShowConectados.ColumnCount = 1;

                    int i = 0;
                    while (i < vector.Length)
                    {
                        if (i == 0)
                        {
                            ShowConectados.Rows[i].Cells[0].Value = "Número de conectados: " + vector[i];
                        }
                        else
                        {
                            ShowConectados.Rows[i].Cells[0].Value = vector[i];
                        }
                        i++;
                    }
                    break;

                case 6:     // Respuesta servicios realizados
                {
                    servicios_rec.Text = "Número total de servicios: " + mensaje;
                    DelegadoParaEscribir delegado = new DelegadoParaEscribir(PonContador);
                    servicios_rec.Invoke(delegado, new object[] { mensaje });
                    break;
                }

                case 8:
                    //He enviado invitación correctamente
                    MessageBox.Show("Invitación enviada correctamente");
                    break;

                case 9:
                    //Recibo invitación
                    //Puedo rechazar o aceptar

                    DialogResult dialogResult = MessageBox.Show("Has recibido una invitación de " + mensaje + ", aceptas?", " Invitación a partida ", MessageBoxButtons.YesNo);
                    if (dialogResult == DialogResult.Yes)
                    {
                        string msg1 = "6/" + mensaje + "-" + "yes";
                        byte[] msg  = System.Text.Encoding.ASCII.GetBytes(msg1);
                        //byte[] msg = System.Text.Encoding.ASCII.GetBytes("6/");
                        estaEnSala = true;
                        server.Send(msg);
                    }
                    else if (dialogResult == DialogResult.No)
                    {
                        string msg1 = "6/" + mensaje + "-" + "no";
                        byte[] msg  = System.Text.Encoding.ASCII.GetBytes(msg1);
                        server.Send(msg);
                    }
                    break;

                case 10:
                {
                    var result = mensaje.Split(',');

                    if (result[1] == "yes")
                    {
                        estaEnSala = true;
                    }
                    else
                    {
                        MessageBox.Show(result[0] + " ha rechazado tu invitación");
                    }
                    break;
                }

                case 11:
                {
                    if (chat == null)
                    {
                        break;
                    }

                    var result = mensaje.Split(',');

                    if (chat.chatMensajes == null)
                    {
                        chat.chatMensajes = new ListBox();
                    }


                    chat.chatMensajes.Items.Add(result[0] + ": " + result[1]);

                    break;
                }

                case 12:
                {
                    //Leemos el indice de nestro player
                    var result = mensaje.Split(',');

                    for (int j = 10; j >= 0; j--)
                    {
                        label3.BackColor = Color.White;
                        label3.ForeColor = Color.Black;
                        label3.Text      = "La partida empieza en: \n" + j;
                        Thread.Sleep(1000);
                    }

                    //byte[] player = new byte[80];
                    //server.Receive(player);

                    //Start game
                    juego = new Juego(Convert.ToInt32(result[1]));
                    juego.setServer(server);
                    juego.setPlayer(Convert.ToInt32(result[0]));
                    juego.ShowDialog();

                    break;
                }

                case 13:
                {
                    // Es el admin
                    button1.Enabled = true;
                    break;
                }

                case 14:
                {
                    //Cambio de dirección de un usuario
                    var result = mensaje.Split(',');
                    juego.direccionesJugadores[Convert.ToInt32(result[0])] = Convert.ToInt32(result[1]);
                    break;
                }
                }
            }
        }
Exemplo n.º 6
0
        private void AtendreServidor()
        {
            while (true) //bucle infinit
            {
                //Rebem missatge del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                // veiem quin codi de resposta hem rebut
                string[] parts = Encoding.ASCII.GetString(msg2).Split('/');

                int    codi     = Convert.ToInt32(parts[0]);
                string missatge = parts[1].Split('\0')[0]; // Guardem la resposta

                switch (codi)
                {
                case 1:     // Log in
                    EntrarResposta(missatge);
                    break;

                case 2:     // Registrar
                    RegistrarResposta(missatge);
                    break;

                case 3:     // Nom guanyadors partida
                    NomGuanyadorsPartidaResposta(missatge);
                    break;

                case 4:     // Partida maxim punts
                    PartidaMaximPuntsJugadorResposta(missatge, NomJugador);
                    break;

                case 5:     // Persones que no ha guanyat
                    PersonesQueNoHaGuanyatResposta(missatge);
                    break;

                case 6:     // Numero de serveis
                    NumeroServeisResposta(missatge);
                    break;

                case 7:     // Notificacio llista de conectats
                    ObtenirConectatsResposta(missatge);
                    break;

                // MessageBox.Show(missatge);
                case 8:     // Notificació on et conviden a jugar una partida
                    MostrarPropostaPartida(missatge);
                    break;

                case 9:     // Resposta a la petició de convidar a una partida
                    string Convidat = ConvidatsNomResposta(missatge);
                    ID_Partida = Convert.ToInt32(ConvidatsIDResposta(missatge));
                    if (Convidat != "NO")
                    {
                        DelegadoParaEscribir delegadoConvidats = new DelegadoParaEscribir(EscriureNomsConvidats);
                        PersonesConvidadesLabel.Invoke(delegadoConvidats, new object[] { Convidat });
                        DelegadoParaEscribir delegadoID = new DelegadoParaEscribir(EscriureIDPartida);
                        ID_label.Invoke(delegadoID, new object[] { Convert.ToString(ID_Partida) });
                    }
                    //PropostaPartidaResposta(missatge);
                    break;

                case 10:
                    string nomsequip = EquipsResposta(missatge);

                    ThreadStart ts = delegate { ObrirPantallaPartida(nomsequip); };
                    Thread      T  = new Thread(ts);
                    T.Start();

                    break;

                case 11:
                    FormsPartida[0].EscriuXat(missatge);
                    break;
                }
            }
        }
Exemplo n.º 7
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;
                }
            }
        }
Exemplo n.º 8
0
        private void AtenderServidor()
        {
            while (true)
            {
                //Recibimos la respuesta del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string[] trozos    = Encoding.ASCII.GetString(msg2).Split('/');
                int      codigo    = Convert.ToInt32(trozos[0]);
                string   respuesta = trozos[1].Split('\0')[0];

                switch (codigo)
                {
                case 0:     //Iniciar sesión
                    if (respuesta == "correcto")
                    {
                        if (!registrado)
                        {
                            DelegadoParaEscribir delegado  = new DelegadoParaEscribir(BorraUsuario);
                            DelegadoParaEscribir delegado1 = new DelegadoParaEscribir(BorraPass);
                            DelegadoCambioColor  delegado2 = new DelegadoCambioColor(Cambiarcolor);
                            MessageBox.Show("Credenciales correctas");
                            Invoke(delegado2);
                            registrado = true;
                            usuario.Invoke(delegado, new object[] { "" });
                            password.Invoke(delegado1, new object[] { "" });
                        }
                    }
                    else if (respuesta == "conectado")
                    {
                        MessageBox.Show("Ya estás conectado al servidor");
                    }
                    else
                    {
                        MessageBox.Show("Error al iniciar sesión");
                    }

                    break;

                case 1:     //Consulta 1

                    MessageBox.Show("La primera vez que jugaron fue: " + respuesta);
                    break;

                case 2:     //Consulta 2


                    MessageBox.Show("La experiencia del jugador que ganó la última partida es: " + respuesta + " puntos");
                    break;

                case 3:     //Consulta 3

                    MessageBox.Show("El jugador " + textBox1.Text + " ha ganado " + respuesta + " partidas");
                    break;

                case 4:     //Registro

                    if (respuesta == "correcto")
                    {
                        MessageBox.Show("Te has dado de alta correctamente en la base de datos");
                    }
                    else if (respuesta == "ya registrado")
                    {
                        MessageBox.Show("Ya hay un usuario con ese nombre de usuario");
                    }
                    else
                    {
                        MessageBox.Show("Se ha producido un error. Vuelve a intentarlo.");
                    }
                    break;

                case 5:     //Desconectar no necesita código porque no recibe nada

                    //Se desconecta el cliente
                    atender.Abort();
                    server.Shutdown(SocketShutdown.Both);
                    server.Close();
                    this.registrado = false;
                    listBox1.Items.Clear();
                    MessageBox.Show("Desconectado correctamente");

                    break;

                case 6:     //Lista de Conectados

                    List <Usuario> ListaUsuarios = new List <Usuario>();
                    //Adaptamos la respuesta a nuestro formato de datos (Lista)
                    string[] prov = respuesta.Split('_');
                    int      i    = 0;
                    while (i < prov.Length - 1)
                    {
                        Usuario u = new Usuario();
                        u.nombre = prov[i];
                        u.socket = Convert.ToInt32(prov[i + 1]);
                        ListaUsuarios.Add(u);
                        i = i + 2;
                    }
                    DelegadoParaBorrar delegado3 = new DelegadoParaBorrar(BorrarTabla1);
                    listBox1.Invoke(delegado3);
                    //tablaUsuarios.Rows.Clear();
                    DelegadoParaAñadir delegado4 = new DelegadoParaAñadir(AñadirElementos1);
                    DelegadoParaTabla  delegado6 = new DelegadoParaTabla(AñadirATabla);
                    tablaUsuarios.Invoke(delegado6, new object[] { ListaUsuarios });
                    for (int j = 0; j < ListaUsuarios.Count; j++)
                    {
                        listBox1.Invoke(delegado4, new object [] { ListaUsuarios[j].nombre });
                        //tablaUsuarios.Rows.Add(ListaUsuarios[j].nombre, ListaUsuarios[j].socket);
                    }

                    break;

                case 7:     //Recibir Socket

                    this.user.socket = Convert.ToInt32(respuesta);
                    break;

                case 8:     //Invitacion a jugar conmigo
                    if (MessageBox.Show("¡El usuario " + respuesta + " te está invitando a una partida privada! ¿Aceptas?", "Invitación!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        string respuesta2 = "9/" + this.user.nombre + "/" + respuesta + "/si";
                        Enviar(respuesta2);
                    }
                    else if (MessageBox.Show("¡El usuario " + respuesta + " te está invitando a una partida privada! ¿Aceptas?", "Invitación!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                    {
                        string respuesta2 = "9/" + this.user.nombre + "/" + respuesta + "/no";
                        Enviar(respuesta2);
                    }
                    break;

                case 9:     //Respuesta a la invitación
                    string[] confirmacion = respuesta.Split('_');
                    if (confirmacion[1] == "si")
                    {
                        MessageBox.Show("El usuario " + confirmacion[0] + " ha aceptado la invitacion!");
                    }
                    else if (confirmacion[1] == "no")
                    {
                        MessageBox.Show("El usuario " + confirmacion[0] + " ha rechazado la invitacion!");
                    }
                    break;

                case 10:     //Mensaje recibido en el chat
                    string[]           mensaje_recibido = respuesta.Split('_');
                    DelegadoParaAñadir delegado5        = new DelegadoParaAñadir(AñadirElementos2);
                    listBox2.Invoke(delegado5, new object[] { (mensaje_recibido[0] + " : " + mensaje_recibido[1]) });
                    if (listBox2.Items.Count >= 10)     //Establecemos un numero maximo de mensajes que podemos tener en el chat
                    {
                        listBox2.Items.RemoveAt(0);
                    }
                    break;
                }
            }
        }
Exemplo n.º 9
0
        private void AtenderServidor()
        {
            while (true)
            {
                //Recibimos mensaje del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string msg5 = Encoding.ASCII.GetString(msg2).Split('\0')[0];
                //MessageBox.Show("mensaje recibido " + msg5 + nombre + "finmensaje");
                string[] trozos = msg5.Split('/');

                int codigo = Convert.ToInt32(trozos[0]);

                string mensaje = trozos[1];
                string mensajevuelta;
                string mensajevuelta2;
                string mensajecrear;
                string Nombreconv;

                switch (codigo)
                {
                case 1:      // LogIn
                    DelegadoParaMostrar d6 = new DelegadoParaMostrar(VisiblelblCase1);
                    label3.Invoke(d6, new Object[] {});
                    DelegadoParaMostrar d7 = new DelegadoParaMostrar(VisibleTxtCase1);
                    Fecha.Invoke(d7, new Object[] {});
                    DelegadoParaMostrar d8 = new DelegadoParaMostrar(VisibleBotonCase1);
                    Ganador.Invoke(d8, new Object[] {});


                    MessageBox.Show("Estas dentro: " + mensaje);
                    break;

                case 2:      // Edad media de los ganadores con ese color

                    MessageBox.Show("Edad media: " + mensaje);
                    break;

                case 3:      // Ganador en esa fecha

                    MessageBox.Show("El ganador es: " + mensaje);
                    break;

                case 4:      // Tanto por ciento de partidas ganadas

                    MessageBox.Show("Tanto por ciento de partidas ganadas con ese color es: " + mensaje);
                    break;

                case 5:     // listadeconectados
                    //MessageBox.Show("Se ha conectado lista: " + mensaje);
                    string[] partes       = Encoding.ASCII.GetString(msg2).Split('/');
                    string   mensajefinal = partes[1].Split('\0')[0];
                    string[] mensaje2     = mensajefinal.Split('|');

                    DelegadoParaEscribir dele = new DelegadoParaEscribir(EscribeConectados);
                    dataGridView1.Invoke(dele, new Object[] { mensaje2 });


                    break;

                case 6:     //Muestra si se ha aceptado la peticion

                    mensajevuelta = trozos[1].Split('\0')[0];
                    acepta        = trozos[2].Split('\0')[0];

                    DelegadoParaMostrar   d9  = new DelegadoParaMostrar(VisiblePanelIf);
                    DelegadoParaEscribir2 d10 = new DelegadoParaEscribir2(EscribeBox2);


                    if ((mensajevuelta == "Acepta") && (acepta != nombre.Text))
                    {
                        panel2.Invoke(d9, new Object[] {});

                        textBox2.Invoke(d10, new Object[] { acepta + " acepta la inviacion" });
                    }
                    else if ((mensajevuelta == "Rechazar") && (acepta != nombre.Text))
                    {
                        panel2.Invoke(d9, new Object[] { });
                        textBox2.Invoke(d10, new Object[] { acepta + " rechaza la inviacion" });
                    }
                    else
                    {
                        MessageBox.Show("Yo no me puedo autoinvitar");
                    }
                    break;

                case 7:     //Invitar

                    mensajevuelta   = trozos[1].Split('\0')[0];
                    NombreInvitador = trozos[2].Split('\0')[0];


                    DelegadoParaMostrar   d11 = new DelegadoParaMostrar(VisibleCase7);
                    DelegadoParaEscribir2 d12 = new DelegadoParaEscribir2(EscribeBox3);
                    DelegadoParaMostrar   d13 = new DelegadoParaMostrar(NoVisiblePanel1);
                    DelegadoParaMostrar   d17 = new DelegadoParaMostrar(VisiblePanel);


                    if (mensajevuelta == "Invitado")
                    {
                        tablero.Invoke(d17, new Object[] { });
                        panel1.Invoke(d11, new Object[] { });
                        InvitadortextBox3.Invoke(d12, new Object[] { NombreInvitador });
                    }
                    else
                    {
                        tablero.Invoke(d17, new Object[] { });
                        panel1.Invoke(d13, new Object[] { });
                    }
                    break;

                case 8:     // Recibo una frase chat
                    mensajevuelta = trozos[1].Split('\0')[0];
                    Nombreconv    = trozos[2].Split('\0')[0];
                    DelegadoParaEscribir2 d16 = new DelegadoParaEscribir2(EscribeChat);
                    Chatlbl.Invoke(d16, new Object[] { Chatlbl.Text + Nombreconv + ":" + mensajevuelta + "\n" });

                    break;

                case 9:     //Mostramos CHAT



                    id             = idposible;
                    mensajevuelta  = trozos[1].Split('\0')[0];
                    mensajevuelta2 = trozos[2].Split('\0')[0];
                    string[] mensajeinvitados = mensajevuelta2.Split('|');

                    if (mensajevuelta == "crear")
                    {
                        DelegadoParaMostrar d14 = new DelegadoParaMostrar(CrearChatVisible);
                        chatlabel.Invoke(d14, new Object[] { });

                        DelegadoParaMostrarLabel d18 = new DelegadoParaMostrarLabel(MostrarLabelrojo);
                        nombreRojo.Invoke(d18, new Object[] { mensajeinvitados });
                    }

                    else
                    {
                        MessageBox.Show("No se ha podido enviar nah :V");
                    }



                    break;

                case 10:     //Enviamos posibe IDP

                    idposible = Convert.ToInt32(trozos[1].Split('\0')[0]);

                    break;

                case 11:     //Iniciar Partida

                    id            = idposible;
                    mensajevuelta = trozos[1].Split('\0')[0];
                    string[] mensajejugadores = trozos[1].Split('|');
                    numerojugadores = (mensajejugadores.Length - 1);

                    for (int i = 0; i < (mensajejugadores.Length - 1); i++)
                    {
                        vectorjugadores[i] = mensajejugadores[i + 1];
                    }

                    vectorposiciones[0] = 130;
                    vectorposiciones[1] = 131;
                    vectorposiciones[2] = 132;
                    vectorposiciones[3] = 133;

                    // Se prepara el inicio de la Partida
                    DelegadoParaMostrarLabel d100 = new DelegadoParaMostrarLabel(MostrarLabels);
                    nombreRojo.Invoke(d100, new Object[] { vectorjugadores });

                    DelegadoParaMostrar d102 = new DelegadoParaMostrar(InicioPartida);
                    nombreRojo.Invoke(d102, new Object[] {});

                    DelegadoParaMostrar jug2 = new DelegadoParaMostrar(VisibleParaJugar);
                    button4.Invoke(jug2, new Object[] { });
                    numeroLbl.Invoke(jug2, new Object[] { });
                    turno = 0;
                    DelegadoParaEscribir2 jug1 = new DelegadoParaEscribir2(EscribeLabelturno);
                    turnoLbl.Invoke(jug1, new Object[] { vectorjugadores[turno] });


                    break;

                case 12:     // Recibe los turnos y las posiciones de las fichas con el dado


                    turno = Convert.ToInt32(trozos[1]);
                    DelegadoParaEscribir2 jug12 = new DelegadoParaEscribir2(EscribeLabelturno);
                    turnoLbl.Invoke(jug12, new Object[] { vectorjugadores[turno] });

                    turno2        = Convert.ToInt32(trozos[2]);
                    mensajevuelta = trozos[3].Split('\0')[0];
                    string[] mensajeposiciones = trozos[3].Split('|');

                    for (int i = 0; i < (mensajeposiciones.Length); i++)
                    {
                        vectorposiciones[i] = Convert.ToInt32(mensajeposiciones[i]);
                    }


                    DelegadoParaFicha d21 = new DelegadoParaFicha(MostraFicha);
                    ficharoja.Invoke(d21, new Object[] { vectorposiciones });

                    break;

                case 13:      // El registro satisfactorio o no y el Borrado de usuarios

                    MessageBox.Show(nombre.Text + ": " + mensaje);
                    break;

                case 14:     //Se recibe el turno y las posiciones de los jugadores al iniciar partida


                    mensajevuelta = trozos[2].Split('\0')[0];
                    string[] mensajeposiciones2 = trozos[2].Split('|');

                    for (int i = 0; i < (mensajeposiciones2.Length); i++)
                    {
                        vectorposiciones[i] = Convert.ToInt32(mensajeposiciones2[i]);
                    }



                    DelegadoParaFicha d23 = new DelegadoParaFicha(MostraFicha);
                    ficharoja.Invoke(d23, new Object[] { vectorposiciones });

                    break;

                case 15:     //FIN PARTIDA

                    MessageBox.Show(nombre.Text + ": " + mensaje);
                    DelegadoParaFinalizar d101 = new DelegadoParaFinalizar(FinPartida);
                    nombreRojo.Invoke(d101, new Object[] {});


                    break;
                }
            }
        }
Exemplo n.º 10
0
        private void AtenderServidor()
        {
            DelegadoParaEscribir delegado = new DelegadoParaEscribir(CambiaString);

            while (true)
            {
                //recibimos mensaje del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string[] recibido = Encoding.ASCII.GetString(msg2).Split('/');
                int      codigo   = Convert.ToInt32(recibido[0]);
                string   mensaje  = recibido[1].Split('\0')[0];
                switch (codigo)
                {
                case 3:      //número de partidas ganadas por un jugador
                    if (mensaje == "NO EXISTE")
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "El jugador introducido no existe.", null });
                    }
                    else if (mensaje == "ERROR")
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "No se ha podido realizar la búsqueda en la base de datos.", null });
                    }
                    else
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "Número de partidas ganadas: " + mensaje, null });
                    }
                    break;

                case 4:     //nombre del ganador de una partida concreta
                    if (mensaje == "NO EXISTE")
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "La partida introducida no existe.", null });
                    }
                    else if (mensaje == "ERROR")
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "No se ha podido realizar la búsqueda en la base de datos.", null });
                    }
                    else
                    {
                        //MessageBox.Show("Nombre del ganador: " + mensaje);
                        resultado1.Invoke(delegado, new object[] { "resultado1", "Nombre del ganador: " + mensaje, null });
                    }
                    break;

                case 5:     //numero de goles de un jugador en concreto
                    if (mensaje == "NO EXISTE")
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "El jugador introducido no existe.", null });
                    }
                    else if (mensaje == "ERROR")
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "No se ha podido realizar la búsqueda en la base de datos.", null });
                    }
                    else
                    {
                        resultado1.Invoke(delegado, new object[] { "resultado1", "Número de goles marcados: " + mensaje, null });
                    }
                    break;

                case 6:     //lista de conectados
                    mensaje = recibido[2].Split('\0')[0];
                    String[] lista = mensaje.Split(',');
                    NConectados.Invoke(delegado, new object[] { "NConectados", recibido[1], null });
                    listBox1.Invoke(delegado, new object[] { "listBox1", null, lista });
                    break;

                case 7:
                    Form3 invi = new Form3(mensaje);
                    invi.ShowDialog();
                    while (invi.resultadoinvitacion == 0)
                    {
                    }
                    invi.Close();
                    string ms;
                    if (invi.resultadoinvitacion == 1)     //ha aceptado la invitacion
                    {
                        ms = "8/SI," + mensaje + "," + usuario;
                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(ms);
                        server.Send(msg);
                        //
                        //iniciar partida
                        //
                    }
                    if (invi.resultadoinvitacion == 2)     //no ha aceptado la invitacion
                    {
                        ms = "8/NO," + mensaje + "," + usuario;
                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(ms);
                        server.Send(msg);
                    }
                    break;

                case 8:
                    string[] trozos = mensaje.Split(',');
                    if (trozos[0] == "SI")     //la otra persona ha aceptado la invitación
                    {
                        MessageBox.Show(trozos[1] + " ha aceptado tu invitación. Prepárate para jugar.");
                        //
                        //iniciar partida
                        //
                    }

                    if (trozos[0] == "NO")    //la otra persona no ha aceptado la invitación
                    {
                        MessageBox.Show(trozos[1] + " ha rechazado tu invitación.");
                    }
                    break;

                case 9:
                    string[] partes = mensaje.Split('$');
                    listBox2.Invoke(delegado, new object[] { "listBox2", null, partes });
                    break;
                }
            }
        }
Exemplo n.º 11
0
        private void AtenderServidor()
        {
            while (true)
            {
                //Recibimos mensaje del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string[] trozos  = Encoding.ASCII.GetString(msg2).Split('/');
                int      codigo  = Convert.ToInt32(trozos[0]);
                string   mensaje = trozos[1].Split('\0')[0];
                string   mensajevuelta;
                string   Nombreconv;

                switch (codigo)
                {
                case 1:      // LogIn
                    DelegadoParaMostrar d6 = new DelegadoParaMostrar(VisiblelblCase1);
                    label3.Invoke(d6, new Object[] {});
                    DelegadoParaMostrar d7 = new DelegadoParaMostrar(VisibleTxtCase1);
                    Fecha.Invoke(d7, new Object[] {});
                    DelegadoParaMostrar d8 = new DelegadoParaMostrar(VisibleBotonCase1);
                    Ganador.Invoke(d8, new Object[] {});


                    MessageBox.Show("Estas dentro: " + mensaje);
                    break;

                case 2:      // Edad media de los ganadores con ese color

                    MessageBox.Show("Edad media: " + mensaje);
                    break;

                case 3:      // Ganador en esa fecha

                    MessageBox.Show("El ganador es: " + mensaje);
                    break;

                case 4:      // Tanto por ciento de partidas ganadas

                    MessageBox.Show("Tanto por ciento de partidas ganadas con ese color es: " + mensaje);
                    break;

                case 5:     // listadeconectados

                    string[] partes       = Encoding.ASCII.GetString(msg2).Split('/');
                    string   mensajefinal = partes[1].Split('\0')[0];
                    string[] mensaje2     = mensajefinal.Split('|');

                    DelegadoParaEscribir dele = new DelegadoParaEscribir(EscribeConectados);
                    dataGridView1.Invoke(dele, new Object[] { mensaje2 });

                    break;

                case 6:     //Muestra si se ha aceptado la peticion

                    mensajevuelta = trozos[1].Split('\0')[0];
                    acepta        = trozos[2].Split('\0')[0];

                    DelegadoParaMostrar   d9  = new DelegadoParaMostrar(VisiblePanelIf);
                    DelegadoParaEscribir2 d10 = new DelegadoParaEscribir2(EscribeBox2);


                    if (mensajevuelta == "Acepta")
                    {
                        panel2.Invoke(d9, new Object[] {});

                        textBox2.Invoke(d10, new Object[] { acepta + " acepta la inviacion" });
                    }
                    else
                    {
                        panel2.Invoke(d9, new Object[] { });
                        textBox2.Invoke(d10, new Object[] { acepta + " rechaza la inviacion" });
                    }

                    break;

                case 7:     //Invitar

                    mensajevuelta   = trozos[1].Split('\0')[0];
                    NombreInvitador = trozos[2].Split('\0')[0];


                    DelegadoParaMostrar   d11 = new DelegadoParaMostrar(VisibleCase7);
                    DelegadoParaEscribir2 d12 = new DelegadoParaEscribir2(EscribeBox3);
                    DelegadoParaMostrar   d13 = new DelegadoParaMostrar(NoVisiblePanel1);
                    DelegadoParaMostrar   d17 = new DelegadoParaMostrar(VisiblePanel);


                    if (mensajevuelta == "Invitado")
                    {
                        tablero.Invoke(d17, new Object[] { });
                        panel1.Invoke(d11, new Object[] { });
                        InvitadortextBox3.Invoke(d12, new Object[] { NombreInvitador });
                    }
                    else
                    {
                        tablero.Invoke(d17, new Object[] { });
                        panel1.Invoke(d13, new Object[] { });
                    }
                    break;

                case 8:     // Recibo una frase chat
                    mensajevuelta = trozos[1].Split('\0')[0];
                    Nombreconv    = trozos[2].Split('\0')[0];
                    DelegadoParaEscribir2 d16 = new DelegadoParaEscribir2(EscribeChat);
                    Chatlbl.Invoke(d16, new Object[] { Chatlbl.Text + Nombreconv + ":" + mensajevuelta + "\n" });

                    break;

                case 9:     //Mostramos CHAT

                    id            = idposible;
                    mensajevuelta = trozos[1].Split('\0')[0];

                    if (mensajevuelta == "crear")
                    {
                        DelegadoParaMostrar d14 = new DelegadoParaMostrar(CrearChatVisible);
                        chatlabel.Invoke(d14, new Object[] { });
                    }

                    else
                    {
                        MessageBox.Show("No se ha podido enviar nah :V");
                    }

                    break;

                case 10:     //Enviamos posibe IDP

                    idposible = Convert.ToInt32(trozos[1].Split('\0')[0]);

                    break;
                }
            }
        }
Exemplo n.º 12
0
        private void AtenderServidor() //Funcion que esta constantemente a la espera de recibir un mensaje del servidor.
        {
            while (true)
            {
                //Recibimos la respuesta del servidor.
                byte[] msg2 = new byte[1500];                                   //Tambien sera un vector de bytes la respuesta.
                server.Receive(msg2);
                string[] trozos    = Encoding.ASCII.GetString(msg2).Split('/'); //Cortar por final de string.
                int      codigo    = Convert.ToInt32(trozos[0]);
                int      idPartida = Convert.ToInt32(trozos[1]);
                string   mensaje;
                mensaje = trozos[2].Split('\0')[0];
                //MessageBox.Show(Convert.ToString(codigo));

                switch (codigo)
                {
                case 1:     //Registrar
                    if (mensaje == "OK")
                    {
                        MessageBox.Show("Te has registrado correctamente");
                        Desconectar();
                    }
                    else if (mensaje == "ERROR_EXISTE")
                    {
                        MessageBox.Show("El usuario ya existe");
                        Desconectar();
                    }
                    else
                    {
                        MessageBox.Show("No hay más capacidad");
                        Desconectar();
                    }
                    break;

                case 2:     //Login
                    if (mensaje == "OK")
                    {
                        DelegadoParaEscribir delegado = new DelegadoParaEscribir(DarNombreContra);
                        this.Invoke(delegado, new object[] {});
                        DelegadoParaEscribir delegado2 = new DelegadoParaEscribir(HacerVisible);
                        this.Invoke(delegado2, new object[] { });
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "~ CONECTADO ~" });
                    }
                    else if (mensaje == "YASESION")
                    {
                        MessageBox.Show("El usuario ya tiene una sesión iniciada");
                        atender.Abort();
                        this.BackColor = Color.Gray;
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                    }
                    else
                    {
                        MessageBox.Show("El usuario no está registrado");
                    }
                    break;

                case 3:     //No se han encontrados los datos introducidos por el ususario en la consulta.
                    if (mensaje != "ERROR_NO_DATOS")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { mensaje });
                    }
                    else
                    {
                        label7.Text = "No se han encontrado datos en la consulta";
                    }
                    break;

                case 4:     //No se han encontrados los datos introducidos por el ususario en la consulta.
                    if (mensaje != "ERROR_NO_DATOS")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { mensaje });
                    }
                    else
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "No se han encontrado datos en la consulta" });
                    }
                    break;

                case 5:     //No se han encontrados los datos introducidos por el ususario en la consulta.
                    if (mensaje != "ERROR_NO_DATOS")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { mensaje });
                    }
                    else
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "No se han encontrado datos en la consulta" });
                    }
                    break;

                case 6:     //No se han encontrados los datos introducidos por el ususario en la consulta.
                    if (mensaje != "ERROR_NO_DATOS")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { mensaje });
                    }
                    else
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "No se han encontrado datos en la consulta" });
                    }
                    break;

                case 7:     //Invoca la funcion RellenarListaConectados y le pasa como parametros los nombres de los conectados.
                    string[]             words     = mensaje.Split(',');
                    DelegadoParaRellenar delegado3 = new DelegadoParaRellenar(RellenaListaConectados);
                    this.Invoke(delegado3, new object[] { words });
                    break;

                case 8:     //Al recibir la invitacion de alguien, puedes rechazarla, enviando un mensaje notificandolo,o bien acceptarla y empezar una partida con quien te invito y los demás jugadores que tambien accepten.
                    if (mensaje == "NO")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "No se ha podido crear la partida, estas en la FRIENDZONE" });
                    }
                    else
                    {
                        string[] partida  = mensaje.Split(',');
                        string   pregunta = "Quieres unirte a una partida con " + partida[1];

                        DialogResult resultado = MessageBox.Show(pregunta, "Nueva partida", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (resultado == DialogResult.Yes)
                        {
                            mensaje = "8/0/" + partida[0] + "," + name + ",YES";
                        }
                        else
                        {
                            mensaje = "8/0/" + partida[0] + "," + name + ",NO";
                        }
                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(mensaje);
                        server.Send(msg);
                    }
                    break;

                case 9:     //Todos los invitados han rechazado tu invitación, por lo tanto no puedes  jugar con nadie. Estas solo.
                    //MessageBox.Show("Estoy dentro del caso 9");
                    trozos = mensaje.Split('-');
                    string [] auxiliar = trozos[0].Split(',');
                    //MessageBox.Show(Convert.ToString(aux[0]));
                    if (auxiliar[0] == "YES")
                    {
                        idPartida = Convert.ToInt32(auxiliar[1]);
                        ThreadStart ts      = delegate { AbrirForm2(idPartida); };
                        Thread      atender = new Thread(ts);
                        atender.Start();
                    }
                    else
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "Estas en la FRIENDZONE" });
                    }
                    break;

                case 10:        //Hace funcionar el chat
                    Forms[partidas[idPartida]].RellenaChat(mensaje);
                    break;

                case 11:        //Darse de baja
                    if (mensaje == "OK")
                    {
                        MessageBox.Show("Te has dado de baja correctamente");
                        Desconectar();
                    }
                    else if (mensaje == "ERROR_AL_ELIMINAR")
                    {
                        MessageBox.Show("Ha sucedido un error en el proceso");
                        Desconectar();
                    }
                    else
                    {
                        MessageBox.Show("El usuario no esta registrado");
                        Desconectar();
                    }
                    break;

                case 12:        //Dibuja las posiciones de los jugadores.
                    Forms[partidas[idPartida]].DibujaPosiciones(mensaje);
                    break;

                case 13:        //Recibir mensaje del servidor diciendo si ha ganado, o ha perdido etc
                    Forms[partidas[idPartida]].NotificarCambios(mensaje);
                    break;

                case 14:     //Notificacion de errores en las consultas.
                    if (mensaje != "ERROR_NO_DATOS")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { mensaje });
                    }
                    else
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "No se han encontrado datos en la consulta" });
                    }
                    break;

                case 15:        //Notificacion de errores en las consultas.
                    if (mensaje != "ERROR_NO_DATOS")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { mensaje });
                    }
                    else
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "No se han encontrado datos en la consulta" });
                    }
                    break;

                case 16:        //Notificacion de errores en las consultas.
                    if (mensaje != "ERROR_NO_DATOS")
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { mensaje });
                    }
                    else
                    {
                        this.Invoke(new DelegadorParaEcribirRepuesta(Mensaje_Respuesta), new object[] { "No se han encontrado datos en la consulta" });
                    }
                    break;

                case 17:        //Recibir mensaje del servidor diciendo si ha ganado, o ha perdido etc
                    Forms[partidas[idPartida]].NotificarCambios2(mensaje);
                    break;
                }
            }
        }
Exemplo n.º 13
0
        private void AtenderServidor()
        {
            while (true)
            {
                //Recibimos la respuesta del servidor
                byte[] msg2 = new byte[80];
                server.Receive(msg2);
                string[] trozos  = Encoding.ASCII.GetString(msg2).Split('/');
                string   cod     = trozos[0];
                int      codigo  = Convert.ToInt32(cod);
                string   mensaje = trozos[1].Split('\0')[0];

                switch (codigo)
                {
                case 1:
                    MessageBox.Show("Se ha creado usuario correctamente ");
                    break;

                case 2:
                    MessageBox.Show(mensaje);
                    //MessageBox.Show("probando", "no probando", MessageBoxButtons.YesNo);
                    break;

                case 3:
                    if (mensaje == "NO")
                    {
                        MessageBox.Show("Usuario no encontrado");
                    }
                    else
                    {
                        MessageBox.Show("El % de partidas ganadas es de: " + mensaje + "%");
                    }
                    break;

                case 4:
                    if (mensaje == "NO")
                    {
                        MessageBox.Show("No hay partida a esa hora o fecha(Recuerda que la fecha se pone XX-XX-XXXX y la hora XX:XX)");
                    }
                    else
                    {
                        MessageBox.Show("El usuario que gano esa partida fue: " + mensaje);
                    }
                    break;

                case 5:
                    if (mensaje == "NO")
                    {
                        string mennsaje = "0/" + Usuario.Text;

                        byte[] msg3 = System.Text.Encoding.ASCII.GetBytes(mennsaje);
                        server.Send(msg3);

                        this.BackColor = Color.Red;

                        MessageBox.Show("No se ha iniciado sesion correctamente ");
                    }
                    else
                    {
                        MessageBox.Show("Se ha podido iniciar sesion");
                    }
                    break;

                case 7:
                    //string[] sConectados = mensaje.Split(',');
                    //       int n = Convert.ToInt32(sConectados[0]);
                    //   dataGridView1.RowCount = n;

                    //   int j = 1;
                    //   for (int i = 0; i < n; i++)
                    //   {
                    //       dataGridView1[0, i].Value = sConectados[j];
                    //       j++;
                    //   }
                    DelegadoParaEscribir delegado = new DelegadoParaEscribir(ActualizarListaConectados);
                    dataGridView1.Invoke(delegado, new object[] { mensaje });
                    break;

                case 8:
                    //if(mensaje == "error")
                    //{
                    //    MessageBox.Show("No se ha podido invitar al usuario");
                    //}
                    //else
                    //{
                    string[] invit  = mensaje.Split(',');
                    int      n      = Convert.ToInt32(invit[1]);
                    var      result = MessageBox.Show(invit[0] + " te ha invitado, aceptas?", " Nueva invitacion ", MessageBoxButtons.YesNo);
                    //MessageBox.Show("probando", "no probando", MessageBoxButtons.YesNo);
                    if (result == DialogResult.Yes)
                    {
                        string respuesta = "9/SI/" + Usuario.Text + "/" + invit[0] + "/" + n;

                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(respuesta);
                        server.Send(msg);
                        //richTextBox1.Visible = true;
                        //MensajeaEnviar.Visible = true;
                        //EnviarMensaje.Visible = true;
                    }
                    else
                    {
                        string respuesta = "9/NO/" + Usuario.Text + "/" + invit[0] + n;

                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(respuesta);
                        server.Send(msg);
                    }

                    //}
                    break;

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

                case 10:
                    DelegadoParaEscribir delegado2 = new DelegadoParaEscribir(EscribirenChat);
                    richTextBox1.Invoke(delegado2, new object[] { mensaje });
                    break;
                }
            }
        }
Exemplo n.º 14
0
        private void AtenderServidor()
        {
            while (true)
            {
                //Recibimos mensaje del servidor
                byte[] msg2 = new byte[400];
                server.Receive(msg2);
                string[] trozos = Encoding.ASCII.GetString(msg2).Split('/');
                //MessageBox.Show(trozos[0] + "/" + trozos[1] + "/" + trozos[2]);
                int codigo    = Convert.ToInt32(trozos[0]); //Tipo de mensaje
                int idPartida = Convert.ToInt32(trozos[1]); //Obtenemos el id de la partida
                //Limpiamos el mensaje
                string mensaje = trozos[2].Split('\0')[0];

                switch (codigo)
                {
                case 1:         //Registrar
                    if (mensaje == "0")
                    {
                        nombre = Usuario.Text;
                        DelegadoParaEscribir delegado = new DelegadoParaEscribir(DesbloquearFunciones);
                        this.Invoke(delegado, new object[] { nombre });
                    }
                    else
                    {
                        DelegadoParaEscribir delegado = new DelegadoParaEscribir(EscrivirInformacion);
                        if (mensaje == "1")
                        {
                            this.Invoke(delegado, new object[] { "Este usuario ya existe" });
                        }
                        else
                        {
                            this.Invoke(delegado, new object[] { "Registro correcto, pero se ha alcanzado el \n maximo de usuarios, intenta conectarte más tarde" });
                        }


                        // Se terminó el servicio.
                        // Nos desconectamos
                        atender.Abort();
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                    }
                    break;

                case 2:         //Login
                    if (mensaje == "0")
                    {
                        nombre = Usuario.Text;
                        DelegadoParaEscribir delegado = new DelegadoParaEscribir(DesbloquearFunciones);
                        this.Invoke(delegado, new object[] { nombre });
                    }
                    else
                    {
                        DelegadoParaEscribir delegado = new DelegadoParaEscribir(EscrivirInformacion);
                        if (mensaje == "1")
                        {
                            this.Invoke(delegado, new object[] { "Usuario y/o contraseña incorrecta" });
                        }

                        else if (mensaje == "2")
                        {
                            this.Invoke(delegado, new object[] { "Se ha alcanzado el maximo de usuarios conectados \n Intentalo más tarde" });
                        }

                        else
                        {
                            this.Invoke(delegado, new object[] { Usuario.Text + " ya tiene una sesion abierta" });
                        }
                        // Se terminó el servicio.
                        // Nos desconectamos
                        atender.Abort();
                        server.Shutdown(SocketShutdown.Both);
                        server.Close();
                    }

                    break;

                case 3:         //El mas rapido
                    DelegadoParaEscribir delegado5 = new DelegadoParaEscribir(EscribirRespuesta);
                    RespuestasBox.Invoke(delegado5, new object[] { mensaje });
                    break;

                case 4:         //Los que ganaron a Joel
                    string[] ganadores = mensaje.Split('*');
                    string   respuesta = ganadores[0];
                    for (int i = 1; i < ganadores.Length; i++)
                    {
                        respuesta = respuesta + "\r\n\r\n" + ganadores[i];
                    }
                    DelegadoParaEscribir delegado3 = new DelegadoParaEscribir(EscribirRespuesta);
                    RespuestasBox.Invoke(delegado3, new object[] { respuesta });
                    break;

                case 5:
                    string []            Viciado   = mensaje.Split(',');
                    DelegadoParaEscribir delegado6 = new DelegadoParaEscribir(EscribirRespuesta);
                    RespuestasBox.Invoke(delegado6, new object[] { "El jugador que mas partidas ha jugado es " + Viciado[0] + " y ha jugado " + Viciado[1] + " veces" });
                    break;

                case 6:         //Actualiza la lista de conectados en el grid
                    DelegadoParaEscribir delegado2 = new DelegadoParaEscribir(Listaconectados);
                    ConectadosGrid.Invoke(delegado2, new object[] { mensaje });
                    break;

                case 7:         //Crear partida o preguntar si quiere unirse a una
                    if (mensaje == "-1")
                    {
                        MessageBox.Show("Lo sentimos, no se ha podido crear la partida");
                    }
                    else
                    {
                        string[] partida  = mensaje.Split(',');
                        string   pregunta = "Quieres unirte a una partida con " + partida[1];

                        DialogResult result1 = MessageBox.Show(pregunta, "Nueva partida", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (result1 == DialogResult.Yes)
                        {
                            mensaje = "7/0/" + partida[0] + "," + nombre + ",YES";
                        }
                        else
                        {
                            mensaje = "7/0/" + partida[0] + "," + nombre + ",NO";
                        }
                        byte[] msg = System.Text.Encoding.ASCII.GetBytes(mensaje);
                        server.Send(msg);
                    }
                    break;

                case 8:         //Iniciar el form de la partida si hay suficientes jugadores
                    trozos = mensaje.Split('-');
                    string [] aux = trozos[0].Split(',');
                    if (aux[0] == "1")
                    {
                        string mensajeJugadores = trozos[1];
                        string mensajeCartas    = trozos[2];
                        idPartida = Convert.ToInt32(aux[1]);
                        ThreadStart ts = delegate { AbrirForm2(idPartida, mensajeCartas, mensajeJugadores); };
                        Thread      T  = new Thread(ts);
                        T.Start();
                    }
                    else
                    {
                        MessageBox.Show("No tienes suficientes amigos");
                    }
                    break;

                case 9:         //Envia mensaje del chat al formulario correcto
                    formularios[partidas[idPartida]].chat(mensaje);
                    break;

                case 10:
                    if (mensaje == "0")
                    {
                        DelegadoParaEscribir delegado4 = new DelegadoParaEscribir(BloquearFunciones);
                        this.Invoke(delegado4, new object[] { "" });
                    }
                    break;

                case 11:        //Envia la jugada realizada por un jugador al formulario correspondente
                    formularios[partidas[idPartida]].Jugada(mensaje);
                    break;

                case 12:        //Un jugador se ha desconectado
                    formularios[partidas[idPartida]].JugadorDesconectado(mensaje);
                    break;

                case 13:        //Jugadores ganan la ronda y pasan al siguiente nivel
                    formularios[partidas[idPartida]].NextLevel(mensaje);
                    break;
                }
            }
        }