コード例 #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
        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);
        }
コード例 #3
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);
        }
コード例 #4
0
        }//numero aleatorio para elegit palabra de diccionario al azar

        public void GeneraPalabra()
        {
            int numero = GenerateRandom(0, diccionario.Count - 1);

            if (numerosUsados.IndexOf(numero) >= 0)
            {
                // si el numero ya fue usad
                GeneraPalabra();
            }
            else
            {
                Palabra = diccionario.ElementAt(numero);
                //elimino los acentos de las palabras
                Palabra = Palabra.Replace('á', 'a');
                Palabra = Palabra.Replace('é', 'e');
                Palabra = Palabra.Replace('í', 'i');
                Palabra = Palabra.Replace('ó', 'o');
                Palabra = Palabra.Replace('ú', 'u');
                Palabra = Palabra.ToUpper();
                //creo el arreglo con longitud equivalente a la palabra obtenida
                palabraArray = new String[Palabra.Length, 2];
                int contador = 0;
                foreach (clsJugador j in Jugadores)
                {
                    j.SinAcertar   = 0;
                    j.FueraDeJuego = false;
                }
                foreach (char i in Palabra)
                {
                    palabraArray[contador, 0] = i.ToString();
                    palabraArray[contador, 1] = null;
                    contador++;
                }
                ganador = null;
            }
        }//genera  una nueva palabra para palabraArray y vuelve las chances perdidas por los jugadores  a cero
コード例 #5
0
ファイル: frmJuego.cs プロジェクト: ulplab/G2_C1_2017_PC
        private void habilitaPalabra(clsMensajeBase m)
        {
            ganador = (clsMensajeGanador)m;
            int cant = ganador.PalabraAhorcado.Length;

            for (int i = 0; i < cant; i++)
            {
                if (i == 0)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb0.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 1)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb1.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 2)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb2.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 3)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb3.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 4)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb4.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 5)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb5.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 6)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb6.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 7)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb7.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 8)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb8.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 9)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb9.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 10)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb10.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 11)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb11.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 12)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb12.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
                else if (i == 13)
                {
                    this.Invoke(new Action(() =>
                    {
                        lb13.Text = ganador.PalabraAhorcado[i].ToString();
                    }));
                }
            }
            frmGanador frmGana = new frmGanador(ganador.ListaJugadores[ganador.Indice_ganador].Nick.ToString(), cliente);

            frmGana.ShowDialog();
            limpiarForm();
            //Reiniciar juego despues que muestre al ganador
        }
コード例 #6
0
ファイル: clsCliente.cs プロジェクト: ulplab/G2_C1_2017_PC
        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();
            }
        }