Esempio n. 1
0
        }// Fim do Método btnNewGame_Click;

        public void Iniciar()
        {
            ///<sumary>As próximas 9 linhas estão aqui, pois
            /// é necessário que estes objetos sejam renovados
            /// a cada nopa partida. Por isso não estão no construtor!
            ///</summary>
            CartasDoJogador01 = new CartasNaMao();
            CartasDoJogador02 = new CartasNaMao();
            CartasDoJogador03 = new CartasNaMao();
            CartasDoJogador04 = new CartasNaMao();
            /// ----------------------------------------------/.
            baralho    = new Baralho();
            jogador_01 = new Jogador("USER01");
            jogador_02 = new Jogador("USER02");
            jogador_03 = new Jogador("USER03");
            jogador_04 = new Jogador("USER04");
            /// ----------------------------------------/.
            estrategia.ZerarContadores();
            baralho.Embaralhar();
            DistribuirCartas();
            CartasDoJogador01.Sort();
            Procurar2Paus();
            ControlTag(true);
            PreencheMao();
        } // Fim do Método Iniciar;
Esempio n. 2
0
 /// <summary>
 /// Toda vez que uma rodada é iniciada este método tenta
 /// encontrar uma carta do mesmo nipe para acompanhar a jogada!
 /// </summary>
 /// <param name="cartas">Cartas do jogador da vex</param>
 /// <param name="nipeMao">Nipe da Carta do mão</param>
 /// <param name="NumCartas">Número de Cartas na mão do jogador</param>
 /// <returns></returns>
 public Carta BuscaCartaMesmoNaipe(CartasNaMao cartas, Naipe nipeMao, int NumCartas)
 {
     for (int i = 0; i < NumCartas; i++)
     {
         if (nipeMao == (Naipe)cartas[i].Naipe)
         {
             Contador.indexAtual = i;
             return(cartas[Contador.indexAtual]);
         }
     }
     Contador.indexAtual = 0;
     return(cartas[0]);
 } // Fim do método BuscaCartaMesmoNaipe;
Esempio n. 3
0
        /// <summary>
        /// Método que retorna a carta de menor valor,
        /// dado o naipe que é recebido como parâmetro!
        /// </summary>
        /// <param name="seuJogo"> Cartas que, neste instante, estão na sua mão  </param>
        /// <param name="naipe"> Naipe a servir </param>
        /// <returns> Retorna um objeto carta </returns>
        private Carta GetSuaMenorCartaDoNaipe(CartasNaMao seuJogo, Naipe naipe)
        {
            Carta retval = null; int Menor = 14;

            for (int i = 0; i < seuJogo.GetNumCartas(); i++)
            {
                if ((seuJogo[i].Valor < Menor) && (Naipe)seuJogo[i].Naipe == naipe)
                {
                    retval = seuJogo[i];
                }
            }
            return(retval);
        }
Esempio n. 4
0
        public Carta GetTheCards(string nome_da_carta, CartasNaMao seuJogo)
        {
            Carta retval = null;

            for (int i = 0; i < seuJogo.GetNumCartas(); i++)
            {
                if (seuJogo[i].ToString() == nome_da_carta)
                {
                    retval = seuJogo[i];
                }
            }
            return(retval);
        }
Esempio n. 5
0
        public bool TemACarta(string nome_da_carta, CartasNaMao seuJogo)
        {
            bool retval = false;

            for (int i = 0; i < seuJogo.GetNumCartas(); i++)
            {
                if (seuJogo[i].ToString() == nome_da_carta)
                {
                    retval = true;
                }
            }
            return(retval);
        }
Esempio n. 6
0
        }     //Fim do Método Click_Img;

        void NovaRodada(Jogador mao, bool copasAberta, CartasNaMao cartasDoVencedor)
        {
            picCartadaPc01.Visible = false;
            picCartadaPc02.Visible = false;
            picCartadaPc03.Visible = false;
            picCartadaPc04.Visible = false;
            // Se o mão for eu, não é para
            // haver jogada automática!
            if (mao.Nome != "USER01")
            {
                Jogada(mao, cartasDoVencedor[0], 0, 0, 0); // Depois mudar isso de acordo com o jogador
                //que for o mão!
            }
        }
        } // Fim da Classe Procurar2Paus();

        bool FindFirstCards(CartasNaMao cartas, Jogador jogador)
        {
            bool achou = false;

            for (int i = 0; i < cartas.GetNumCartas(); i++)
            {
                if (cartas[i].Valor == 2 && cartas[i].Naipe == (int)Naipe.Paus)
                {
                    achou            = true;
                    Contador.NipeMao = Naipe.Paus;
                    Contador.mao     = jogador;
                    if (jogador.ToString() != "USER01")
                    {
                        Jogada(jogador, cartas[i], i, 0, 0);
                    }
                    else
                    {
                        tmEsperaDeJogador01.Enabled = true;
                    }
                }
            }
            return(achou);
        }// Fim do método FindFirstCards;
Esempio n. 8
0
        /// <summary>
        /// Em fase de projeto!
        /// Este método vai substituir o método
        /// BuscaCartaMesmoNaipe()
        /// </summary>
        /// <param name="seuJogo"> O jogo que, no instante, está na sua mão </param>
        /// <param name="cartasDaRodada"> As cartas que, no instante, estão na mesa </param>
        /// <returns> Retorna um objeto do tipo Carta </returns>
        public Carta GetMelhorCarta(CartasNaMao seuJogo, Carta[] cartasDaRodada, Naipe naipe_mao,
                                    Jogador jogador_mao, Jogador jogador_vez)
        {
            Carta retval = null;

            /// REVISAR SEMPRE ESTE SUMMARY, POIS EL SÓ DEVE SER APAGADO DEPOIS DE PRONTO!
            /// OBS: DEIXAR A REGION FECHADA E POUSAR O MOUSE PARA LER. ABRIR PARA REVISAR!!!
            #region :: Summary com detalhes da Implementação do método!
            ///<summary>
            /// ** Carta mão != (copas && espadas);
            /// 01 - Avalia se tem o naipe para servir;
            /// 02 - Caso negativo, verificar se é a primeira rodada;
            /// 03 - Caso negativo, verificar se está com dama de espadas;
            /// 04 - Caso positivo embarcar dama de espadas;
            /// 04 - Caso negativo, verificar se copas está aberta;
            /// 05 - Caso positivo, servir copas;
            /// 06 - No caso de embarcar copas servir sempre o maior valor na sua mão;
            /// 07 - No caso de não ter o naipe mão, mas também não ter nem copas e nem a dama de espadas,
            /// Escolher um naipe e embarcar o maior valor desse naipe;
            /// ** - Você é o mão e não é a primeira rodada;
            /// 01 - Escolha um naipe != Espadas && Copas;
            /// 02 - Se houver pelo menos 5 cartas do mesmo naipe ainda a ser jogada, sem contar as suas,
            /// obviamente, Você deve sair com a maior carta deste naipe
            /// ** - Caso a carta mão seja espadas:
            /// 01 - Verifica se a dama de espadas já saiu;
            /// 02 - caso positivo, ****
            /// ** - caso a carta mão seja copas;
            /// 01 - se vc for o último jogador da rodada avalie dois casos;
            /// 02 - se você não tem como servir uma carta menor para fugir de pegar esta rodada,
            /// então sirva a maior que vc tiver de copas
            ///</summary>
            #endregion
            //Escolhe Naipe;
            switch (naipe_mao)
            {
            case Naipe.Paus:
                // Verifica se "você(PCn)" é o mão!
                //=-=-=-=-=-=-=-=-=-=-=-=-=/.
                //Obs.: Não é necessária a verificação
                //de NumRodada, pois se fosse a primeira
                //Seria disparado no método Procura2Paus();
                if (jogador_mao.Nome == jogador_vez.Nome)
                {
                    //Verifica se vc tem copas e tem o
                    //dois de copas e copas está aberta!?
                    //(NO FUTURO AVALIAR SE TEM A "MENOR" CARTA DE COPAS)
                    if ((seuJogo.GetNumCopas() > 0) && (TemACarta("Dois de Copas", seuJogo)) && (Contador.copasAbertas))
                    {
                        retval = GetTheCards("Dois de Copas", seuJogo);
                    }
                    else
                    {
                        //Esta implementação deve ser OTIMIZADA,
                        //no sentido de buscar a melhor carta <> 2copas
                        retval = GetAnyCards(seuJogo);
                    }
                }
                else
                {
                    //Verifica se tem Paus na Mão,
                    //caso em que terá que servir!!
                    if (seuJogo.GetNumPaus() > 0)
                    {
                        //Desenvolver: (Vc tem paus! Deverá jogar paus!!!)
                        retval = GetMelhorOpcaoServir(new Naipe[] { Naipe.Paus }, seuJogo,
                                                      cartasDaRodada, naipe_mao, jogador_mao);
                    }
                    else
                    {
                        //Não tem paus para servir.
                        //Verifica se estamos na 1ª rodada, caso em que não poderão
                        //ser embarcadas copas e nem a dama de espadas!!!
                        if (Contador.numRodada <= 1)
                        {
                            //Vc vai embarcar, mas não pode ser copas
                            //e nem a dama de espadas, visto que está na primeira rodada!
                            retval = GetMelhorOpcaoEmbarcar(new Naipe[] { Naipe.Espadas, Naipe.Ouros }, seuJogo,
                                                            cartasDaRodada, naipe_mao, jogador_mao);
                        }
                        else
                        {
                            //Não tem paus para servir. Avalia se já foi
                            //aberta copas. Além disso, também avalia se vc tem copas,
                            // caso contrário essa abordagem seria inútil!
                            //Obs.: NESTA ABORDAGEM (IF), DAMOS PREFERÊNCIA
                            //À COPAS  EM  DETRIMENTO  DA  DAMA DE ESPADAS,
                            //QUE TEM SUA IMPLEMENTAÇÃO NA CRÍTICA DO "ELSE".
                            if (Contador.copasAbertas && seuJogo.GetNumCopas() > 0)
                            {
                                //Vc vai jogar copas!
                                retval = GetMelhorOpcaoEmbarcar(new Naipe[] { Naipe.Copas }, seuJogo,
                                                                cartasDaRodada, naipe_mao, jogador_mao);
                            }
                            else
                            {
                                // Verifica se vc está com a miquilina.
                                // Para manter padrão, verificar se miquilina saiu.
                                // NÃO seria necessário, visto que vc avalia se ESTÁ com ela ou não!
                                if ((!Contador.miquilinaSaiu) && seuJogo.EstaComMiquilina())
                                {
                                    //Seta retval com dama de espadas!
                                    for (int i = 0; i < seuJogo.GetNumCartas(); i++)
                                    {
                                        if (seuJogo[i].Valor == 12 && (seuJogo[i].Naipe == (int)(Naipe.Espadas)))
                                        {
                                            retval = seuJogo[i];
                                        }
                                    }
                                }
                                else
                                {
                                    //Vc não tem paus, mas tb não pode jogar copas e nem a miquilina!
                                    retval = GetMelhorOpcaoEmbarcar(new Naipe[] { Naipe.Espadas, Naipe.Ouros }, seuJogo,
                                                                    cartasDaRodada, naipe_mao, jogador_mao);
                                }
                            } // if (Contador.copasAbertas && seuJogo.GetNumCopas() > 0)
                        }     // if ( Contador.numRodada <= 1 )
                    }         // if ( seuJogo.GetNumPaus() > 0 )
                }             // if ( jogador_mao.Nome == vez.Nome )
                break;

            case Naipe.Ouros:
                break;

            case Naipe.Espadas:
                break;

            case Naipe.Copas:
                break;

            default:
                // Não faz nada, pois nunca deveremos chegar até aqui!
                break;
            }
            return(retval);
        }
Esempio n. 9
0
 //IMPLEMENTAR!!!!
 /// <summary>
 /// Método que retorna a "melhor" carta do mesmo naipe do mão!
 /// Ele recebe, de uma "classe anônima", um array com os naipes possíveis para embarcar.
 /// Obs: Este método não pode retornar a Dama de Espadas (Miquilina).
 /// <param name="naipes_possiveis"> Array de naipes possíveis para embarcarr </param>
 /// <param name="seuJogo"> O jogo que, no instante, o jogador tem na mão! </param>
 /// <param name="cartasDaRodada"> Cartas que, no instante, estão na mesa! </param>
 /// <param name="naipe_mao"> Naipe puxado pelo jogador mao </param>
 /// <param name="jogador_mao"> jogador que tem o dever de iniciar a jogada! </param>
 /// <returns> Objeto do tipo Carta, que na avaliação da inteligência do jogo é a melhor! </returns><summary>
 public Carta GetMelhorOpcaoEmbarcar(Naipe[] naipes_possiveis, CartasNaMao seuJogo,
                                     Carta[] cartasDaRodada, Naipe naipe_mao, Jogador jogador_mao)
 {
     /// Obs: Este método não pode retornar a Dama de Espadas (Miquilina).
     return(new Carta(2, 12));
 }
Esempio n. 10
0
 //IMPLEMENTAR!!!
 /// <summary>
 /// Método que retorna a "melhor" carta do mesmo naipe do mão!
 /// Ele recebe, de uma "classe anônima" um array com os naipes possíveis para servir!
 /// <param name="naipes_possiveis"> Array de naipes possíveis para servir </param>
 /// <param name="seuJogo"> O jogo que, no instante, o jogador tem na mão! </param>
 /// <param name="cartasDaRodada"> Cartas que, no instante, estão na mesa! </param>
 /// <param name="naipe_mao"> Naipe puxado pelo jogador mao </param>
 /// <param name="jogador_mao"> jogador que tem o dever de iniciar a jogada! </param>
 /// <returns> Objeto do tipo Carta, que na avaliação da inteligência do jogo é a melhor! </returns><summary>
 public Carta GetMelhorOpcaoServir(Naipe[] naipes_possiveis, CartasNaMao seuJogo,
                                   Carta[] cartasDaRodada, Naipe naipe_mao, Jogador jogador_mao)
 {
     // Desenvolver!!! RETORNAR MELHOR CARTA PARA SERVIR!
     return(new Carta(2, 12));
 }
Esempio n. 11
0
 ///IMPLEMENTAR!!!
 ///
 public Carta GetAnyCards(CartasNaMao seuJogo)
 {
     // Desenvolver!!! RETORNAR A MELHOR CARTA NO MOMENTO!
     return(new Carta(2, 12));
 }