Exemplo n.º 1
0
        private void ManejarClienteAuto(TcpClient cli)
        {
            try
            {
                string        data;
                NetworkStream ns = cli.GetStream();
                StreamReader  sr = new StreamReader(ns);
                StreamWriter  sw = new StreamWriter(ns);

                //sw.WriteLine("#INSCRIBIR#nombre#");
                //sw.WriteLine("#REPARTECARTAS#{cartasJugador1/cartasJugador2}#cartasMesa#");
                //sw.WriteLine("#TURNO#turnoJugador#idturnoJugador#");
                //sw.WriteLine("#JUGADA#cartamanoJug2#numCartasMesa#cartasMesa(cartaMesa1/cartamesa2...)#");
                //sw.WriteLine("#ACTUALIZAMESA#cartasMesa#");
                //sw.WriteLine("#CHECKCARDS#");
                //sw.Flush();
                while (true)
                {
                    try
                    {
                        data = sr.ReadLine();
                        Console.WriteLine(data); //para depuración es server
                        String[] subdatos = data.Split('#');
                        #region comINSCRIBIR
                        if (subdatos[1] == "INSCRIBIR")
                        {
                            if (jugador1 == "")
                            {
                                jugador1 = subdatos[2];
                                idJug1   = cli.Client.RemoteEndPoint.ToString();
                                turno    = idJug1;
                                IpJug1   = idJug1.Split(':')[0];
                                sw.WriteLine("Bienvenido jugador: " + jugador1);
                                sw.Flush();
                            }
                            else
                            {
                                sw.WriteLine("Ya hay dos jugadores");
                                sw.Flush();
                            }
                        }
                        #endregion
                        #region comREPARTIRCARTAS
                        if (subdatos[1] == "REPARTECARTAS")
                        {
                            if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                            {
                                sw.WriteLine(ListarCartasJugador1());
                                sw.Flush();
                            }
                            sw.WriteLine(ListarCartasMesa());
                            sw.Flush();
                        }
                        #endregion
                        #region comESTABLECETURNO
                        if (subdatos[1] == "TURNO")
                        {
                            string result = "";
                            if (turno.Equals(idJug1))
                            {
                                result = "El turno es de " + jugador1 + "#" + idJug1;
                            }
                            if (turno.Equals("maquina"))
                            {
                                if (ListaManoautoPlay.Count == 0)
                                {
                                    repartecartasAuto();
                                }

                                result = "El turno es de la maquina";
                                List <List <Carta> > combinaciones = calculaCombinaciones();
                                if (combinaciones.Count == 0)
                                {
                                    Carta c = chooseAutoCard();
                                    if (c == null)
                                    {
                                        listaCartasMesa.Add(ListaManoautoPlay[0]);
                                        //mesaActualizada[mesaActualizada.Length - 1] = ListaManoautoPlay[0].nombre;
                                        ListaManoautoPlay.Remove(ListaManoautoPlay[0]);
                                    }
                                    else
                                    {
                                        listaCartasMesa.Add(c);
                                        //mesaActualizada[mesaActualizada.Length - 1] = c.nombre;
                                        Carta toRemove = ListaManoautoPlay.Find(f => f.nombre.Equals(c.nombre));
                                        ListaManoautoPlay.Remove(toRemove);
                                    }
                                }
                                else
                                {
                                    List <Carta> trick = chooseTrick(combinaciones);
                                    if (listaCartasMesa.Count == 0)
                                    {
                                        PuntosautoPlay.escobas++;
                                    }
                                    PuntosautoPlay.addBaza(trick);
                                }


                                turno = idJug1;
                            }
                            sw.WriteLine(result);
                            sw.Flush();
                        }
                        #endregion
                        #region comJugada
                        if (subdatos[1] == "JUGADA")
                        {
                            if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                            {
                                if (subdatos[2] == "0")
                                {
                                    //mesaActualizada = subdatos[3].Split('/');
                                    //string[] list_updated = subdatos[3].Split('/');
                                    //int index = list_updated.Length - 2;
                                    //Carta carta = new Carta(list_updated[index]);
                                    //listaCartasMesa.Add(carta);
                                    getCartasMesa(subdatos[3].Split('/'));
                                    turno = "maquina";
                                }
                                else
                                {
                                    Jugada jugada = HacerJugada(data);
                                    if (jugada.checkBaza())
                                    {
                                        sw.WriteLine("El jugador " + jugador1 + " ha hecho baza");
                                        sw.Flush();
                                        PuntosJugador1 = new Puntos(jugada);
                                        sw.WriteLine(
                                            PuntosJugador1.GetNumCartas() + "#"
                                            + PuntosJugador1.GetNumOros() + "#"
                                            + PuntosJugador1.GetNumSietes() + "#"
                                            + PuntosJugador1.GetSieteOros());
                                        sw.Flush();
                                        foreach (Carta card in bazaMesa)
                                        {
                                            Carta carta = listaCartasMesa.Find(f => f.nombre.Equals(card.nombre));
                                            if (carta != null)
                                            {
                                                listaCartasMesa.Remove(carta);
                                            }
                                        }
                                        turno = "maquina";
                                    }
                                    else
                                    {
                                        sw.WriteLine("No se puede hacer baza. Intentalo de nuevo");
                                        sw.Flush();
                                    }
                                }
                            }
                        }
                        #endregion
                        #region comSENDTABLEUPDATED
                        if (subdatos[1] == "SENDTABLEUPDATED")
                        {
                            mesaActualizada = subdatos[2].Split('/');
                        }
                        #endregion
                        #region comGETTABLEUPDATED
                        if (subdatos[1] == "GETTABLEUPDATED")
                        {
                            //string mesa = "";
                            //for (int i = 0; i < mesaActualizada.Length; i++)
                            //{
                            //    if (!String.IsNullOrWhiteSpace(mesaActualizada[i]))
                            //    {
                            //        mesa += mesaActualizada[i] + "/";
                            //    }
                            //}
                            //sw.WriteLine(mesa);
                            string update = ListarCartasMesa();
                            sw.WriteLine(update);
                            sw.Flush();
                        }
                        #endregion
                        #region comCheckCards
                        if (subdatos[1] == "CHECKCARDS")
                        {
                            string numCartas = subdatos[2];
                            if (cont == 40)
                            {
                                endGame = true;
                            }
                            if (!endGame)
                            {
                                sw.WriteLine("OK");
                                sw.Flush();
                                if (numCartas == "0")
                                {
                                    if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                                    {
                                        ListaManoJugador1 = new List <Carta>();
                                        repartecartasJug1();
                                        sw.WriteLine(ListarCartasJugador1());
                                        sw.Flush();
                                    }
                                    else
                                    {
                                        ListaManoautoPlay = new List <Carta>();
                                        repartecartasAuto();
                                    }
                                }
                            }
                            else if (ListaManoautoPlay.Count == 0 && numCartas == "0")
                            {
                                sw.WriteLine("GetPoints");
                                sw.Flush();
                                string[] puntos = sr.ReadLine().Split('/');
                                Console.WriteLine(puntos.ToString());
                                if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                                {
                                    Thread.Sleep(4000);
                                    PuntosJugador1           = new Puntos();
                                    PuntosJugador1.escobas   = Convert.ToInt16(puntos[0]);
                                    PuntosJugador1.cartas    = Convert.ToInt16(puntos[1]);
                                    PuntosJugador1.oros      = Convert.ToInt16(puntos[2]);
                                    PuntosJugador1.sietes    = Convert.ToInt16(puntos[3]);
                                    PuntosJugador1.sieteOros = Convert.ToInt16(puntos[4]);
                                    //PuntosautoPlay.escobas =;
                                    PuntosautoPlay.cartas    = PuntosautoPlay.GetNumCartas();
                                    PuntosautoPlay.oros      = PuntosautoPlay.GetNumOros();
                                    PuntosautoPlay.sietes    = PuntosautoPlay.GetNumSietes();
                                    PuntosautoPlay.sieteOros = PuntosautoPlay.GetSieteOros();
                                    ComparePoints();
                                    string winner = Winner();
                                    sw.WriteLine(winner);
                                    sw.Flush();
                                    break;
                                }
                            }
                            else
                            {
                                sw.WriteLine("NOK");
                                sw.Flush();
                            }
                        }
                        #endregion
                    }
                    catch (IOException error)
                    {
                        Console.WriteLine("Error: {0}", error.ToString());
                        break;
                    }
                }
                ns.Close();
                cli.Close();
            }
            catch (Exception error)
            {
                Console.WriteLine("Error: {0}", error.ToString());
                throw;
            }
        }
Exemplo n.º 2
0
        private void ManejarCliente(TcpClient cli)
        {
            string        data;
            NetworkStream ns = cli.GetStream();
            StreamReader  sr = new StreamReader(ns);
            StreamWriter  sw = new StreamWriter(ns);

            //sw.WriteLine("#INSCRIBIR#nombre#");
            //sw.WriteLine("#REPARTECARTAS#{cartasJugador1/cartasJugador2}#cartasMesa#");
            //sw.WriteLine("#TURNO#turnoJugador#idturnoJugador#");
            //sw.WriteLine("#JUGADA#cartamanoJug2#numCartasMesa#cartasMesa(cartaMesa1/cartamesa2...)#");
            //sw.WriteLine("#ACTUALIZAMESA#cartasMesa#");
            //sw.WriteLine("#PUNTUACION#");
            sw.Flush();
            while (true)
            {
                try
                {
                    data = sr.ReadLine();
                    Console.WriteLine(data); //para depuración es server
                    String[] subdatos = data.Split('#');
                    #region comINSCRIBIR
                    if (subdatos[1] == "INSCRIBIR")
                    {
                        if (jugador1 == "")
                        {
                            jugador1 = subdatos[2];
                            idJug1   = cli.Client.RemoteEndPoint.ToString();
                            turno    = idJug1;
                            IpJug1   = idJug1.Split(':')[0];
                            sw.WriteLine("Bienvenido jugador: " + jugador1);
                            sw.Flush();
                        }
                        else if (jugador2 == "")
                        {
                            jugador2 = subdatos[2];
                            idJug2   = cli.Client.RemoteEndPoint.ToString();
                            IpJug2   = idJug2.Split(':')[0];
                            sw.WriteLine("Bienvenido jugador: " + jugador2);
                            sw.Flush();
                        }
                        else
                        {
                            sw.WriteLine("Ya hay dos jugadores");
                            sw.Flush();
                        }
                    }
                    #endregion
                    #region comREPARTIRCARTAS
                    if (subdatos[1] == "REPARTECARTAS")
                    {
                        if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                        {
                            sw.WriteLine(ListarCartasJugador1());
                            sw.Flush();
                        }
                        if (idJug2 == cli.Client.RemoteEndPoint.ToString())
                        {
                            sw.WriteLine(ListarCartasJugador2());
                            sw.Flush();
                        }
                        sw.WriteLine(ListarCartasMesa());
                        sw.Flush();
                    }
                    #endregion
                    #region comESTABLECETURNO
                    if (subdatos[1] == "TURNO")
                    {
                        if (turno.Equals(idJug1))
                        {
                            sw.WriteLine("El turno es de " + jugador1 + "#" + idJug1);
                            sw.Flush();
                        }
                        else if (turno.Equals(idJug2))
                        {
                            sw.WriteLine("El turno es de " + jugador2 + "#" + idJug2);
                            sw.Flush();
                        }
                    }
                    #endregion
                    #region comJugada
                    if (subdatos[1] == "JUGADA")
                    {
                        if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                        {
                            if (subdatos[2] == "0")
                            {
                                mesaActualizada = subdatos[3].Split('/');
                                turno           = idJug2;
                            }
                            else
                            {
                                Jugada jugada = HacerJugada(data);
                                if (jugada.checkBaza())
                                {
                                    sw.WriteLine("El jugador " + jugador1 + " ha hecho baza");
                                    sw.Flush();
                                    PuntosJugador1 = new Puntos(jugada);
                                    sw.WriteLine(
                                        PuntosJugador1.GetNumCartas() + "#"
                                        + PuntosJugador1.GetNumOros() + "#"
                                        + PuntosJugador1.GetNumSietes() + "#"
                                        + PuntosJugador1.GetSieteOros());
                                    sw.Flush();
                                    turno = idJug2;
                                }
                                else
                                {
                                    sw.WriteLine("No se puede hacer baza. Intentalo de nuevo");
                                    sw.Flush();
                                }
                            }
                        }
                        else if (idJug2 == cli.Client.RemoteEndPoint.ToString())
                        {
                            if (subdatos[2] == "0")
                            {
                                mesaActualizada = subdatos[3].Split('/');
                                turno           = idJug1;
                            }
                            else
                            {
                                Jugada jugada = HacerJugada(data);
                                if (jugada.checkBaza())
                                {
                                    sw.WriteLine("El jugador " + jugador2 + " ha hecho baza");
                                    sw.Flush();
                                    PuntosJugador2 = new Puntos(jugada);
                                    sw.WriteLine(
                                        PuntosJugador2.GetNumCartas() + "#"
                                        + PuntosJugador2.GetNumOros() + "#"
                                        + PuntosJugador2.GetNumSietes() + "#"
                                        + PuntosJugador2.GetSieteOros());
                                    turno = idJug1;
                                    sw.Flush();
                                }
                                else
                                {
                                    sw.WriteLine("No se puede hacer baza. Intentalo de nuevo");
                                    sw.Flush();
                                }
                            }
                        }
                    }
                    #endregion
                    #region comUpdateTable
                    if (subdatos[1] == "UPDATETABLE")
                    {
                        mesaActualizada = subdatos[2].Split('/');
                    }
                    #endregion
                    #region comACTUALIZARMESA
                    if (subdatos[1] == "ACTUALIZAMESA")
                    {
                        string mesa = "";
                        for (int i = 0; i < mesaActualizada.Length; i++)
                        {
                            if (!String.IsNullOrWhiteSpace(mesaActualizada[i]))
                            {
                                mesa += mesaActualizada[i] + "/";
                            }
                        }
                        sw.WriteLine(mesa);
                        sw.Flush();
                    }
                    #endregion
                    #region comCheckCards
                    if (subdatos[1] == "CHECKCARDS")
                    {
                        string numCartas = subdatos[2];

                        if (!endGame)
                        {
                            sw.WriteLine("OK");
                            sw.Flush();
                            if (numCartas == "0")
                            {
                                if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                                {
                                    ListaManoJugador1 = new List <Carta>();
                                    repartecartasJug1();
                                    sw.WriteLine(ListarCartasJugador1());
                                    sw.Flush();
                                }
                                else if (idJug2 == cli.Client.RemoteEndPoint.ToString())
                                {
                                    ListaManoJugador2 = new List <Carta>();
                                    repartecartasJug2();
                                    sw.WriteLine(ListarCartasJugador2());
                                    sw.Flush();
                                }
                                if (cont == 16)
                                {
                                    endGame = true;
                                }
                            }
                        }
                        else if (numCartas == "0")
                        {
                            sw.WriteLine("GetPoints");
                            sw.Flush();
                            string[] puntos = sr.ReadLine().Split('/');
                            Console.WriteLine(puntos.ToString());
                            if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                            {
                                PuntosJugador1           = new Puntos();
                                PuntosJugador1.escobas   = Convert.ToInt16(puntos[0]);
                                PuntosJugador1.cartas    = Convert.ToInt16(puntos[1]);
                                PuntosJugador1.oros      = Convert.ToInt16(puntos[2]);
                                PuntosJugador1.sietes    = Convert.ToInt16(puntos[3]);
                                PuntosJugador1.sieteOros = Convert.ToInt16(puntos[4]);
                                Thread.Sleep(4000);
                                ComparePoints();
                                sw.WriteLine(Winner());
                                sw.Flush();
                                break;
                            }
                            if (idJug2 == cli.Client.RemoteEndPoint.ToString())
                            {
                                PuntosJugador2           = new Puntos();
                                PuntosJugador2.escobas   = Convert.ToInt16(puntos[0]);
                                PuntosJugador2.cartas    = Convert.ToInt16(puntos[1]);
                                PuntosJugador2.oros      = Convert.ToInt16(puntos[2]);
                                PuntosJugador2.sietes    = Convert.ToInt16(puntos[3]);
                                PuntosJugador2.sieteOros = Convert.ToInt16(puntos[4]);
                                ComparePoints();
                                sw.WriteLine(Winner());
                                sw.Flush();
                                break;
                            }
                        }
                        else
                        {
                            sw.WriteLine("NOK");
                            sw.Flush();
                        }
                    }
                    #endregion
                }
                catch (Exception error)
                {
                    Console.WriteLine("Error: {0}", error.ToString());
                    break;
                }
            }
            ns.Close();
            cli.Close();
        }
Exemplo n.º 3
0
        private void ManejarCliente(TcpClient cli)
        {
            string        data;
            NetworkStream ns = cli.GetStream();
            StreamReader  sr = new StreamReader(ns);
            StreamWriter  sw = new StreamWriter(ns);

            //sw.WriteLine("#INSCRIBIR#nombre#");
            //sw.WriteLine("#REPARTECARTAS#{cartasJugador1/cartasJugador2}#cartasMesa#");
            //sw.WriteLine("#TURNO#turnoJugador#");
            //sw.WriteLine("#JUGADA#cartamanoJug2#numCartasMesa#cartasMesa(cartaMesa1/cartamesa2...)#");
            //sw.WriteLine("#ACTUALIZAMESA#cartasMesa#");
            //sw.WriteLine("#PUNTUACION#");
            sw.Flush();
            while (true)
            {
                try
                {
                    data = sr.ReadLine();
                    Console.WriteLine(data); //para depuración es server
                    String[] subdatos = data.Split('#');
                    #region comINSCRIBIR
                    if (subdatos[1] == "INSCRIBIR")
                    {
                        if (jugador1 == "")
                        {
                            jugador1 = subdatos[2];
                            idJug1   = cli.Client.RemoteEndPoint.ToString();
                            IpJug1   = idJug1.Split(':')[0];
                            sw.WriteLine("Bienvenido jugador: " + jugador1);
                            sw.Flush();
                        }
                        else if (jugador2 == "")
                        {
                            jugador2 = subdatos[2];
                            idJug2   = cli.Client.RemoteEndPoint.ToString();
                            IpJug2   = idJug2.Split(':')[0];
                            sw.WriteLine("Bienvenido jugador: " + jugador2);
                            sw.Flush();
                        }
                        else
                        {
                            sw.WriteLine("Ya hay dos jugadores");
                            sw.Flush();
                        }
                    }
                    #endregion
                    #region comREPARTIRCARTAS
                    if (subdatos[1] == "REPARTECARTAS")
                    {
                        repartecartasJug();
                        repartecartasMesa();

                        if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                        {
                            sw.WriteLine(ListarCartasJugador1());
                            sw.Flush();
                        }
                        if (idJug2 == cli.Client.RemoteEndPoint.ToString())
                        {
                            sw.WriteLine(ListarCartasJugador2());
                            sw.Flush();
                        }

                        sw.WriteLine(ListarCartasMesa());
                        sw.Flush();
                    }
                    #endregion
                    #region comESTABLECETURNO
                    if (subdatos[1] == "TURNO")
                    {
                        if (turno % 2 != 0)
                        {
                            sw.WriteLine("El turno es de " + jugador1);
                            sw.Flush();
                            turno++;
                        }
                        else
                        {
                            sw.WriteLine("El turno es de " + jugador2);
                            sw.Flush();
                            turno++;
                        }
                    }
                    #endregion
                    #region comJugada
                    if (subdatos[1] == "JUGADA")
                    {
                        if (idJug1 == cli.Client.RemoteEndPoint.ToString())
                        {
                            Jugada jugada = HacerJugada(data);
                            if (jugada.checkBaza())
                            {
                                sw.WriteLine("El jugador " + jugador1 + " ha hecho baza");
                                // sw.Flush();
                                Puntos puntos = new Puntos(jugada);
                                sw.WriteLine(
                                    puntos.GetNumCartas() + "#"
                                    + puntos.GetNumOros() + "#"
                                    + puntos.GetNumSietes() + "#"
                                    + puntos.GetSieteOros());

                                sw.Flush();
                            }
                            else
                            {
                                sw.WriteLine("No se puede hacer baza. Intentalo de nuevo");
                                sw.Flush();
                            }
                        }
                        else if (idJug2 == cli.Client.RemoteEndPoint.ToString())
                        {
                            Jugada jugada = HacerJugada(data);
                            if (jugada.checkBaza())
                            {
                                sw.WriteLine("El jugador " + jugador2 + " ha hecho baza");
                                sw.Flush();
                            }
                            else
                            {
                                sw.WriteLine("No se puede hacer baza. Intentalo de nuevo");
                                sw.Flush();
                            }
                        }
                    }
                    #endregion
                }
                catch (Exception error)
                {
                    Console.WriteLine("Error: {0}", error.ToString());
                    break;
                }
            }
            ns.Close();
            cli.Close();
        }