public static int Desempata(Mao mao1, Jogo jogo1, Mao mao2, Jogo jogo2) { var sobraMao1 = mao1.Cartas.Where(x => !jogo1._cartas.Any(y => y.Valor == x.Valor)); var sobraMao2 = mao2.Cartas.Where(x => !jogo2._cartas.Any(y => y.Valor == x.Valor)); var descobreCartaAlta1 = DescobreCartaAlta(new Mao(sobraMao1)); var descobreCartaAlta2 = DescobreCartaAlta(new Mao(sobraMao2)); return descobreCartaAlta1 > descobreCartaAlta2 ? 1 : 2; }
public void So_posso_ter_cinco_cartas() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C2, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C4, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C5, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C6, TipoNaipe.C)); }
public void Posso_descobrir_quadra() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.H)); mao.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.D)); mao.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.S)); mao.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.C)); var tipoJogo = AvaliadorDeMao.Avalia(mao); Assert.AreEqual(TipoJogo.Quadra, tipoJogo); }
public void Posso_descobrir_flush() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C2, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C8, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C5, TipoNaipe.C)); var tipoJogo = AvaliadorDeMao.Avalia(mao); Assert.AreEqual(TipoJogo.Flush, tipoJogo); }
public void Posso_descobrir_dois_pares() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C2, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.D)); mao.AdicionarCarta(new Carta(TipoCarta.C5, TipoNaipe.D)); mao.AdicionarCarta(new Carta(TipoCarta.C5, TipoNaipe.C)); var tipoJogo = AvaliadorDeMao.Avalia(mao); Assert.AreEqual(TipoJogo.DoisPares, tipoJogo); }
public void Posso_descobrir_a_carta_alta() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C2, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C4, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C5, TipoNaipe.C)); var maiorCarta = new Carta(TipoCarta.C5, TipoNaipe.C); var carta = AvaliadorDeMao.DescobreCartaAlta(mao); Assert.AreEqual(maiorCarta, carta); }
public void Posso_descobri_o_vencedor_da_quinta_entrada() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.C2, TipoNaipe.H)); mao.AdicionarCarta(new Carta(TipoCarta.C2, TipoNaipe.D)); mao.AdicionarCarta(new Carta(TipoCarta.C4, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C4, TipoNaipe.D)); mao.AdicionarCarta(new Carta(TipoCarta.C4, TipoNaipe.S)); var mao2 = new Mao(); mao2.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.C)); mao2.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.D)); mao2.AdicionarCarta(new Carta(TipoCarta.C3, TipoNaipe.S)); mao2.AdicionarCarta(new Carta(TipoCarta.C9, TipoNaipe.S)); mao2.AdicionarCarta(new Carta(TipoCarta.C9, TipoNaipe.D)); var jogo = new JogoPoker(mao, mao2); int numeroMao = jogo.Vencedor(); Assert.AreEqual(1, numeroMao); }
public static TipoJogo Avalia(Mao mao) { if (TemRoyalFlush(mao.Cartas)) return TipoJogo.RoyalFlush; if (TemSequenciaFlush(mao.Cartas)) return TipoJogo.SequenciaFlush; if (TemQuadra(mao.Cartas)) return TipoJogo.Quadra; if (TemFullHouse(mao.Cartas)) return TipoJogo.FullHouse; if (TemFlush(mao.Cartas)) return TipoJogo.Flush; if (TemSequencia(mao.Cartas)) return TipoJogo.Sequencia; if (TemTrinca(mao.Cartas, out cartaDaTrinca)) return TipoJogo.Trinca; if (TemDoisPares(mao.Cartas)) return TipoJogo.DoisPares; if (TemUmPar(mao.Cartas)) return TipoJogo.Par; return TipoJogo.CartaAlta; }
public JogoPoker(Mao mao, Mao mao2) { _mao = mao; _mao2 = mao2; }
public static Carta DescobreCartaAlta(Mao mao) { return mao.Cartas.OrderBy(car => car.Valor).Last(); }
public void Nao_posso_adicionar_carta_ja_existente() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C1, TipoNaipe.C)); }
public void Posso_descobrir_royal_flush() { var mao = new Mao(); mao.AdicionarCarta(new Carta(TipoCarta.CA, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.CK, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.CQ, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.C10, TipoNaipe.C)); mao.AdicionarCarta(new Carta(TipoCarta.CJ, TipoNaipe.C)); var tipoJogo = AvaliadorDeMao.Avalia(mao); Assert.AreEqual(TipoJogo.RoyalFlush, tipoJogo); }