コード例 #1
0
        internal bool esPoker(string[] mano)
        {
            //Comprobar 4 cartas con el mismo valor
            var manoTupla = ManosPokerUtils.manoStringToTupla(mano);

            bool poker = false;

            //Al tener que ser 4 cartas igual podemos comprobar si exiten 4 cartas igual a la primera o a la segunda

            //Primera carta
            int valorCarta = manoTupla.First().Item1;

            int cartasIguales = manoTupla.Count(c => c.Item1 == valorCarta);

            if (cartasIguales == 4)
            {
                poker = true;
            }

            //Segunda carta
            valorCarta    = manoTupla.ElementAt(1).Item1;
            cartasIguales = manoTupla.Count(c => c.Item1 == valorCarta);
            if (cartasIguales == 4)
            {
                poker = true;
            }

            return(poker);
        }
コード例 #2
0
        internal string[] getCartasTrio(string[] mano)
        {
            //Ordenar las cartas de la mano
            var manoTupla = ManosPokerUtils.manoStringToTupla(mano).OrderBy(c => c.Item1);

            //Al estar ordenado, comprobamos si hay 3 cartas con el mismo valor
            //Empezamos de la primera a la tercera
            //Luego segunda a la cuarta
            //Y terminamos con tercera a quinta
            if (manoTupla.ElementAt(0).Item1 == manoTupla.ElementAt(1).Item1&& manoTupla.ElementAt(0).Item1 == manoTupla.ElementAt(2).Item1)
            {
                return(ManosPokerUtils.manoTuplaToString(new Tuple <int, char>[] { manoTupla.ElementAt(0), manoTupla.ElementAt(1), manoTupla.ElementAt(2) }));
            }

            else if (manoTupla.ElementAt(1).Item1 == manoTupla.ElementAt(2).Item1&& manoTupla.ElementAt(1).Item1 == manoTupla.ElementAt(3).Item1)
            {
                return(ManosPokerUtils.manoTuplaToString(new Tuple <int, char>[] { manoTupla.ElementAt(1), manoTupla.ElementAt(2), manoTupla.ElementAt(3) }));
            }

            else if (manoTupla.ElementAt(2).Item1 == manoTupla.ElementAt(3).Item1&& manoTupla.ElementAt(2).Item1 == manoTupla.ElementAt(4).Item1)
            {
                return(ManosPokerUtils.manoTuplaToString(new Tuple <int, char>[] { manoTupla.ElementAt(2), manoTupla.ElementAt(3), manoTupla.ElementAt(4) }));
            }

            return(null);
        }
コード例 #3
0
        internal string[] getCartasPoker(string[] mano)
        {
            var cartasPoker = new List <string>();
            var manoTupla   = ManosPokerUtils.manoStringToTupla(mano);

            //Primera carta
            int valorCarta = manoTupla.First().Item1;

            var cartasIguales = manoTupla.Where(c => c.Item1 == valorCarta);

            if (cartasIguales.Count() == 4)
            {
                return(ManosPokerUtils.manoTuplaToString(cartasIguales.ToArray()));
            }

            //Probamos con la segunda carta
            valorCarta = manoTupla.ElementAt(1).Item1;

            cartasIguales = manoTupla.Where(c => c.Item1 == valorCarta);

            if (cartasIguales.Count() == 4)
            {
                return(ManosPokerUtils.manoTuplaToString(cartasIguales.ToArray()));
            }


            return(null);
        }
コード例 #4
0
        internal bool esColor(string[] mano)
        {
            //Comprobar que todas las cartas son del mismo palo
            var manoTupla = ManosPokerUtils.manoStringToTupla(mano);

            char palo = manoTupla.First().Item2;

            bool color = manoTupla.All(c => c.Item2 == palo);

            return(color);
        }
コード例 #5
0
        internal string[] getCartasPareja(string[] mano)
        {
            //Ordenar las cartas de la mano
            var manoTupla = ManosPokerUtils.manoStringToTupla(mano).OrderBy(c => c.Item1);

            //Comprobar dos cartas con valores iguales seguidas
            for (int i = 0; i < manoTupla.Count() - 1; i++)
            {
                if (manoTupla.ElementAt(i).Item1 == manoTupla.ElementAt(i + 1).Item1)
                {
                    return(ManosPokerUtils.manoTuplaToString(new Tuple <int, char>[] { manoTupla.ElementAt(i), manoTupla.ElementAt(i + 1) }));
                }
            }

            return(null);
        }
コード例 #6
0
        internal bool esEscalera(string[] mano)
        {
            var manoTupla = ManosPokerUtils.manoStringToTupla(mano);
            //Ordenar por valor
            var manoOrdenada = manoTupla.OrderBy(c => c.Item1);

            //Comprobamos comsecutivos
            bool ordenada = true;

            for (int i = 1; i < manoOrdenada.Count(); i++)
            {
                if (manoOrdenada.ElementAt(i).Item1 != manoOrdenada.ElementAt(i - 1).Item1 + 1)
                {
                    ordenada = false;
                }
            }

            return(ordenada);
        }
コード例 #7
0
        private string resuelveEmpatePareja(string[] manoJugador1, string[] manoJugador2)
        {
            //Mirar el valor de la pareja
            var cartasParejaJugador1 = getCartasPareja(manoJugador1);
            var cartasParejaJugador2 = getCartasPareja(manoJugador2);

            int valorParejaJugador1 = ManosPokerUtils.getValorNumericoCarta(cartasParejaJugador1[0]);
            int valorParejaJugador2 = ManosPokerUtils.getValorNumericoCarta(cartasParejaJugador2[0]);

            if (valorParejaJugador1 > valorParejaJugador2)
            {
                return("Ganador jugador1 - Pareja");
            }
            else if (valorParejaJugador2 > valorParejaJugador1)
            {
                return("Ganador jugador2 - Pareja");
            }
            //En caso de que la pareja sea igual, comprobar el valor del resto de cartas
            else
            {
                //Ordenamos el resto de cartas por su valor (De mayor a menor)
                var restoCartasJugador1 = ManosPokerUtils.manoStringToTupla(manoJugador1.Except(cartasParejaJugador1).ToArray()).OrderByDescending(c => c.Item1);
                var restoCartasJugador2 = ManosPokerUtils.manoStringToTupla(manoJugador2.Except(cartasParejaJugador2).ToArray()).OrderByDescending(c => c.Item1);

                int valorCartaJugador1, valorCartaJugador2;
                for (int i = 0; i < restoCartasJugador1.Count(); i++)
                {
                    valorCartaJugador1 = restoCartasJugador1.ElementAt(i).Item1;
                    valorCartaJugador2 = restoCartasJugador2.ElementAt(i).Item1;
                    if (valorCartaJugador1 > valorCartaJugador2)
                    {
                        return("Ganador jugador1 - CartaMasAlta : " + ManosPokerUtils.getRepresentacionCarta(valorCartaJugador1) + restoCartasJugador1.ElementAt(i).Item2);
                    }
                    if (valorCartaJugador2 > valorCartaJugador1)
                    {
                        return("Ganador jugador2 - CartaMasAlta : " + ManosPokerUtils.getRepresentacionCarta(valorCartaJugador2) + restoCartasJugador2.ElementAt(i).Item2);
                    }
                }

                return("Empate");
            }
        }
コード例 #8
0
        private string resuelveEmpateCartaMasAlta(string[] manoJugador1, string[] manoJugador2)
        {
            //Ordenamos cartas por su valor (de mayor a menor)
            var cartasJugador1 = ManosPokerUtils.manoStringToTupla(manoJugador1.ToArray()).OrderByDescending(c => c.Item1);
            var cartasJugador2 = ManosPokerUtils.manoStringToTupla(manoJugador2.ToArray()).OrderByDescending(c => c.Item1);

            int valorCartaJugador1, valorCartaJugador2;

            for (int i = 0; i < cartasJugador1.Count(); i++)
            {
                valorCartaJugador1 = cartasJugador1.ElementAt(i).Item1;
                valorCartaJugador2 = cartasJugador2.ElementAt(i).Item1;
                if (valorCartaJugador1 > valorCartaJugador2)
                {
                    return("Ganador jugador1 - CartaMasAlta : " + ManosPokerUtils.getRepresentacionCarta(valorCartaJugador1) + cartasJugador1.ElementAt(i).Item2);
                }
                if (valorCartaJugador2 > valorCartaJugador1)
                {
                    return("Ganador jugador2 - CartaMasAlta : " + ManosPokerUtils.getRepresentacionCarta(valorCartaJugador2) + cartasJugador2.ElementAt(i).Item2);
                }
            }

            return("Empate");
        }