示例#1
0
        public clsMensajeBase recibirMensaje(string mensaje)
        {
            clsMensajeBase convertido = JsonConvert.DeserializeObject <clsMensajeBase>(mensaje);

            switch (convertido.Tipo)
            {
            case "MENSAJE_PARTIDA":
                clsMensajePartida retorno1 = JsonConvert.DeserializeObject <clsMensajePartida>(mensaje);
                return(retorno1);

            case "MENSAJE_JUEGO":
                clsMensajeJuego retorno2 = JsonConvert.DeserializeObject <clsMensajeJuego>(mensaje);
                return(retorno2);

            case "MENSAJE_PERDEDOR":
                clsMensajePerdedor retorno3 = JsonConvert.DeserializeObject <clsMensajePerdedor>(mensaje);
                return(retorno3);

            case "MENSAJE_GANADOR":
                clsMensajeGanador retorno4 = JsonConvert.DeserializeObject <clsMensajeGanador>(mensaje);
                return(retorno4);

            case "MENSAJE_TIMER":
                clsMensajeTimer retorno5 = JsonConvert.DeserializeObject <clsMensajeTimer>(mensaje);
                return(retorno5);

            case "MENSAJE_FIN_PARTIDA":
                clsMensajeFinPartida retorno6 = JsonConvert.DeserializeObject <clsMensajeFinPartida>(mensaje);
                return(retorno6);

            default: return(convertido);
            }
        }
示例#2
0
 private void btnArriesgar_Click(object sender, EventArgs e)
 {
     if (tbPalabra.Text != " " && tbPalabra.Text != "") // Checkear bien que no hayan varios espacios
     {
         clsMensajeJuego msj = new clsMensajeJuego();
         msj.LetraPalabra = tbPalabra.Text.ToUpper();
         msj.Accion       = "PROBAR_PALABRA";
         msj.Nick         = cliente.Nick;
         cliente.enviar(msj);
     }
 }
示例#3
0
        private void btnLetra_Click(object sender, EventArgs e)
        {
            if (tbLetra.Text != " " && tbLetra.Text != "")
            {
                clsMensajeJuego msj = new clsMensajeJuego();
                msj.LetraPalabra = tbLetra.Text.ToUpper();
                msj.Accion       = "PROBAR_LETRA";
                msj.Nick         = cliente.Nick;
                cliente.enviar(msj);

                tbLetra.Clear();
                tbLetra.Focus();
            }
        }
示例#4
0
        public clsMensajeJuego enviaLetra(string nick, string l)
        {
            clsMensajeJuego msjRetorno      = new clsMensajeJuego();
            List <int>      listaPosiciones = new List <int>();
            int             indiceJugador   = BuscaIndiceJugador(nick);

            msjRetorno.Retorno = "FALLO";
            for (int i = 0; i <= (palabraArray.Length / 2) - 1; i++)
            {
                if (palabraArray[i, 0].Equals(l.ToString()))
                {
                    listaPosiciones.Add(i);
                    msjRetorno.Retorno = "ACERTADO";
                    palabraArray[i, 1] = nick;// agregado martes a la noche  23:00hs  esto agrega el jugador que adivina al arreglo
                }
            }
            if (msjRetorno.Retorno.Equals("FALLO"))
            {
                Jugadores.ElementAt(indiceJugador).SinAcertar++;
                if (Jugadores.ElementAt(indiceJugador).SinAcertar == CHANCES)
                {
                    Perdio(nick);
                }
            }
            else
            {
                if (palabraAdivinada())
                {
                    asignaPuntajePorPartidaAjugadores();
                    ganador = new clsMensajeGanador();

                    ganador.ListaJugadores  = jugadores;
                    ganador.Indice_ganador  = puntajeMasAltoPorPartida(nick);
                    ganador.Adivinador      = nick;
                    ganador.PalabraAhorcado = palabra;
                }
            }
            msjRetorno.Nick          = nick;
            msjRetorno.LetraPalabra  = l;
            msjRetorno.PosicionLetra = listaPosiciones;
            msjRetorno.Accion        = "PROBAR_LETRA";//REVISAR PORQUE SE PIERDE LA ACCION AL ENVIAR AL CLIENTE EL MSJ
            return(msjRetorno);
        }
示例#5
0
 private void controlaFallo(clsMensajeJuego mensaje, String nombre)
 {
     if (juego.Jugadores.ElementAt(juego.BuscaIndiceJugador(nombre)).FueraDeJuego)
     {
         clsMensajePerdedor msjPerdedor = new clsMensajePerdedor();
         EnviarAUno(nombre, msjPerdedor);
     }
     else
     {
         if (mensaje.Retorno.Equals("FALLO"))
         {
             EnviarAUno(nombre, mensaje);
         }
         else
         {
             if (juego.Ganador != null)
             {
                 EnviarATodos(juego.Ganador);
                 Thread.Sleep(5000);
                 t.Abort();
                 if (cantidadRondas < 2)
                 {
                     reiniciaRonda();
                     cantidadRondas++;
                 }
                 else
                 {
                     clsMensajeFinPartida msjFinPartida = new clsMensajeFinPartida();
                     EnviarATodos(msjFinPartida);
                     clsServer server = new clsServer();
                 }
             }
             else
             {
                 EnviarATodos(mensaje);
             }
         }
     }
 }
示例#6
0
        public void recibe(clsMensajeBase m, String nombre) //Revisar String nombre que viene JSON completo
        {
            lock (a)
            {
                clsMensajeJuego mensaje = (clsMensajeJuego)m;

                mensaje.PalabraAhorcado = juego.Palabra;
                switch (m.Accion)
                {
                case "PROBAR_LETRA":
                    mensaje = juego.enviaLetra(nombre, mensaje.LetraPalabra);
                    controlaFallo(mensaje, nombre);

                    break;

                case "PROBAR_PALABRA":
                    mensaje = juego.enviaPalabra(nombre, mensaje.LetraPalabra);
                    controlaFallo(mensaje, nombre);
                    break;
                }
            }
        }
示例#7
0
        public clsMensajeJuego enviaPalabra(string nick, string s)
        {
            clsMensajeJuego msjRetorno = new clsMensajeJuego();

            if (palabra.Equals(s))
            {
                Jugadores.ElementAt(BuscaIndiceJugador(nick)).Puntaje = Jugadores.ElementAt(BuscaIndiceJugador(nick)).Puntaje + 5;
                msjRetorno.Retorno = "ACERTADO";
                //p.Puntaje = 5;//cantidad de puntajes por acertar
                //finJuego(p.Color);
                for (int i = 0; i <= (palabraArray.Length / 2) - 1; i++)
                {
                    if (palabraArray[i, 1] == null)
                    {
                        palabraArray[i, 1] = "0";
                    }
                }//este bucle hace que complete la palabra entonces la funcion palabra adivinada puede devolver true
                asignaPuntajePorPartidaAjugadores();
                if (palabraAdivinada())
                {
                    asignaPuntajePorPartidaAjugadores();
                    ganador = new clsMensajeGanador();

                    ganador.ListaJugadores  = jugadores;
                    ganador.Indice_ganador  = puntajeMasAltoPorPartida(nick);
                    ganador.Adivinador      = nick;
                    ganador.PalabraAhorcado = palabra;
                }
            }
            else
            {
                //quitarJugador(p);
                msjRetorno.Retorno = "FALLO";
            }
            msjRetorno.LetraPalabra = s;
            msjRetorno.Accion       = "PROBAR_PALABRA";
            return(msjRetorno);
        }
示例#8
0
        private void habilitaLetra(clsMensajeBase m)
        {
            clsMensajeJuego msj     = (clsMensajeJuego)m;
            Color           colorJG = Color.Orange;

            lvJugadores.Invoke(new Action(() =>
            {
                foreach (ListViewItem list in lvJugadores.Items)
                {
                    this.Invoke(new Action(() =>
                    {
                        if (msj.Nick.Equals(list.SubItems[0].Text))
                        {
                            colorJG = list.SubItems[0].ForeColor;
                        }
                    }));
                }
            }));



            List <int> posiciones = msj.PosicionLetra;

            for (int i = 0; i < posiciones.Count; i++)
            {
                if (posiciones[i] == 0)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb0.Text             = msj.LetraPalabra;
                        lbAdivina0.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 1)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb1.Text             = msj.LetraPalabra;
                        lbAdivina1.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 2)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb2.Text             = msj.LetraPalabra;
                        lbAdivina2.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 3)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb3.Text             = msj.LetraPalabra;
                        lbAdivina3.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 4)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb4.Text             = msj.LetraPalabra;
                        lbAdivina4.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 5)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb5.Text             = msj.LetraPalabra;
                        lbAdivina5.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 6)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb6.Text             = msj.LetraPalabra;
                        lbAdivina6.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 7)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb7.Text             = msj.LetraPalabra;
                        lbAdivina7.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 8)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb8.Text             = msj.LetraPalabra;
                        lbAdivina8.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 9)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb9.Text             = msj.LetraPalabra;
                        lbAdivina9.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 10)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb10.Text             = msj.LetraPalabra;
                        lbAdivina10.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 11)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb11.Text             = msj.LetraPalabra;
                        lbAdivina11.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 12)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb12.Text             = msj.LetraPalabra;
                        lbAdivina12.BackColor = colorJG;
                    }));
                }
                else if (posiciones[i] == 13)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb13.Text             = msj.LetraPalabra;
                        lbAdivina13.BackColor = colorJG;
                    }));
                }
            }
        }
示例#9
0
        public void leeInputCliente()
        {
            try
            {
                clsMensajeBase mb = new clsMensajeBase();
                mb.Nick = nick;
                streamw.WriteLine(serializador.enviarMensaje(mb));
                streamw.Flush();


                string aux1 = streamr.ReadLine();
                mensaje = serializador.recibirMensaje(aux1);
                start(mensaje);
                while (true)
                {
                    string aux = streamr.ReadLine();
                    mensaje = serializador.recibirMensaje(aux);
                    switch (mensaje.Tipo)
                    {
                    case "MENSAJE_JUEGO":
                    {
                        clsMensajeJuego mensajeJuego = (clsMensajeJuego)mensaje;
                        if (mensaje.Retorno != "FALLO" && mensaje.Accion == "PROBAR_LETRA")
                        {
                            acertoLetra(mensajeJuego);
                        }
                        else if (mensaje.Retorno == "FALLO" && mensaje.Accion == "PROBAR_LETRA")
                        {
                            falloLetra();
                        }

                        else if (mensaje.Retorno == "FALLO" && mensaje.Accion == "PROBAR_PALABRA")
                        {
                            falloPalabra();
                        }
                    } break;

                    case "MENSAJE_PERDEDOR":
                    {
                        falloPalabra();
                    } break;

                    case "MENSAJE_GANADOR":
                    {
                        clsMensajeGanador mensajeGanador = (clsMensajeGanador)mensaje;
                        acertoPalabra(mensajeGanador);
                    } break;

                    case "MENSAJE_FIN_PARTIDA":
                    {
                        clsMensajeFinPartida mensajeFinPartida = (clsMensajeFinPartida)mensaje;
                        finPartida();
                    } break;

                    case "MENSAJE_TIMER":
                    {
                        clsMensajeTimer mensajeTimer = (clsMensajeTimer)mensaje;
                        timeForm(mensajeTimer);
                        if (mensajeTimer.Segundero == 0)
                        {
                            falloPalabra();
                        }
                    } break;
                    }
                }
            }
            catch (InvalidOperationException e)
            {
                ExitGame();
            }
            catch (SocketException e)
            {
                DesconexionServidor();
            }
            catch (System.IO.IOException e)
            {
                DesconexionServidor();
            }
        }