public void escreveInfoCarta(Itens_Compartilhados.Carta carta)
 {
     Console.WriteLine("\nJogador: " + carta.ID);
     Console.WriteLine("\nCodigo: " + carta.cod_Carta);
     Console.WriteLine("Nome: " + carta.nome);
     Console.WriteLine("Tipo: " + carta.tipo);
     Console.WriteLine("Altura: " + carta.altura);
     Console.WriteLine("Comprimento: " + carta.comprimento);
     Console.WriteLine("Peso: " + carta.peso);
     Console.WriteLine("Idade: " + carta.idade);
     if (carta.trunfo)
     {
         Console.WriteLine("Essa carta e o Trunfo");
     }
     Console.WriteLine("\nAtributo selecionado: " + carta.atributo_teste);
 }
        public Itens_Compartilhados.RetornoJogada jogada(Itens_Compartilhados.Carta cartaEnv)
        {
            Itens_Compartilhados.Comandos comando = new Itens_Compartilhados.Comandos();
            comando.comando = "JOGADA";
            comando.carta   = cartaEnv;
            comando.ID      = this.ID;
            byte[] jogada = this.funcoes.ObjectToByteArray(comando);
            TrySend(jogada);
            byte[] buff     = new byte[32768];
            int    received = socketClient.Receive(buff);

            byte[] dataReceived = new byte[received];
            Array.Copy(buff, dataReceived, received);
            Itens_Compartilhados.RetornoJogada retornoJogada = new Itens_Compartilhados.RetornoJogada();
            retornoJogada = (Itens_Compartilhados.RetornoJogada)funcoes.ByteArrayToObject(buff);
            return(retornoJogada);
        }
        private Itens_Compartilhados.Jogador[] embaralhar(int qtd)
        {
            int     cartasCada  = 32 / qtd;
            int     cartasExtra = 32 % qtd;
            int     numero;
            Boolean OK;

            Itens_Compartilhados.Jogador[] jogs   = new Itens_Compartilhados.Jogador[8];
            Itens_Compartilhados.Carta[]   cartas = new Itens_Compartilhados.Carta[33];
            jogs = this.jogadores;
            Random rnd = new Random();

            resetJogada();
            for (int i = 0; i < jogs.Length; i++)
            {
                for (int j = 0; j < jogs[i].cartas.Length; j++)
                {
                    jogs[i].cartas[j].ativo           = false;
                    this.jogadores[i].cartas[j].ativo = false;
                }
            }
            if (!this.isEmbaralhado)
            {
                for (int i = 0; i < cartas.Length; i++)
                {
                    cartas[i]       = new Itens_Compartilhados.Carta();
                    cartas[i].ativo = false;
                }

                for (int i = 0; i < jogs.Length; i++)
                {
                    if (jogs[i].conectado && jogs[i].jogando)
                    {
                        for (int j = 0; j < cartasCada; j++)
                        {
                            OK = false;
                            while (!OK)
                            {
                                numero = rnd.Next(1, 33);
                                if (!cartas[numero].ativo)
                                {
                                    jogs[i].cartas[numero].ativo = true;
                                    cartas[numero].ativo         = true;
                                    OK = true;
                                }
                            }
                        }
                    }
                }

                if (cartasExtra > 0)
                {
                    List <int> lista = new List <int>();
                    lista.Clear();

                    for (int i = 0; i < cartasExtra; i++)
                    {
                        OK = false;

                        while (!OK)
                        {
                            numero = rnd.Next(0, jogs.Length - 1);
                            if (!lista.Contains(numero))
                            {
                                if (jogs[numero].conectado && jogs[numero].jogando)
                                {
                                    for (int j = 1; j < cartas.Length; j++)
                                    {
                                        if (!cartas[j].ativo)
                                        {
                                            jogs[numero].cartas[j].ativo = true;
                                            cartas[j].ativo = true;
                                            break;
                                        }
                                    }
                                    lista.Add(numero);
                                    OK = true;
                                }
                            }
                        }
                    }
                    lista.Clear();
                }
            }
            primeiroJogador();
            return(jogs);
        }
        public Itens_Compartilhados.RetornoJogada jogada()
        {
            retornoJogada.qtdJogadores  = this.qtdJogadores;
            retornoJogada.jogadores     = this.jogadores;
            retornoJogada.cartasJogadas = jogadaEmEspera;
            int    qtdJogada = 0;
            String trunfo    = string.Empty;

            for (int i = 0; i < jogadaEmEspera.Length; i++)
            {
                if (jogadaEmEspera[i].ativo)
                {
                    qtdJogada++;
                    if (jogadaEmEspera[i].trunfo)
                    {
                        trunfo = jogadaEmEspera[i].cod_Carta;
                    }
                }
            }

            Itens_Compartilhados.Carta[] listaCartas = new Itens_Compartilhados.Carta[qtdJogada];

            for (int i = 0; i < listaCartas.Length; i++)
            {
                listaCartas[i] = new Itens_Compartilhados.Carta();
            }

            for (int i = 0; i < jogadaEmEspera.Length; i++)
            {
                if (jogadaEmEspera[i].ativo)
                {
                    listaCartas[i] = jogadaEmEspera[i];
                }
            }

            if (string.IsNullOrEmpty(trunfo))
            {
                List <Itens_Compartilhados.Carta> listaOrdenada = null;

                switch (listaCartas[0].atributo_teste)
                {
                case "altura":
                    listaOrdenada = new List <Itens_Compartilhados.Carta>(listaCartas.OrderByDescending(lista => lista.altura).ToList());
                    break;

                case "comprimento":
                    listaOrdenada = new List <Itens_Compartilhados.Carta>(listaCartas.OrderByDescending(lista => lista.comprimento).ToList());
                    break;

                case "peso":
                    listaOrdenada = new List <Itens_Compartilhados.Carta>(listaCartas.OrderByDescending(lista => lista.peso).ToList());
                    break;

                case "idade":
                    listaOrdenada = new List <Itens_Compartilhados.Carta>(listaCartas.OrderByDescending(lista => lista.idade).ToList());
                    break;
                }

                for (int j = 0; j < jogadaEmEspera.Length; j++)
                {
                    if (listaOrdenada[0].cod_Carta == jogadaEmEspera[j].cod_Carta)
                    {
                        retornoJogada.cartaVencedora = jogadaEmEspera[j];
                        retornoJogada.vencedor       = jogadaEmEspera[j].ID;
                        this.jogadorDaVez            = jogadaEmEspera[j].ID;
                        break;
                    }
                }
            }
            else
            {
                for (int i = 0; i < jogadaEmEspera.Length; i++)
                {
                    if (jogadaEmEspera[i].cod_Carta == trunfo)
                    {
                        retornoJogada.cartaVencedora = jogadaEmEspera[i];
                        retornoJogada.vencedor       = jogadaEmEspera[i].ID;
                        this.jogadorDaVez            = jogadaEmEspera[i].ID;
                        break;
                    }
                }
            }
            return(retornoJogada);
        }