private bool valorCorrespondente(Carta carta) { return(deck.Any(x => x.Cor == carta.Cor || x.Valor == carta.Valor || x.Cor == CorCarta.CORINGA)); }
private Rodada jogandoCartas(Carta descarteAtual) { var rodada = new Rodada(); rodada.Resultado = ResultadoRodada.CartaComum; var partida = deck.Where(x => x.Cor == descarteAtual.Cor || x.Valor == descarteAtual.Valor || x.Cor == CorCarta.CORINGA).ToList(); if (partida.All(x => x.Valor == ValorCarta.CompraQuatro)) { rodada.carta = partida.First(); rodada.corDeclarada = selecionarCor(); rodada.Resultado = ResultadoRodada.CompraQuatro; deck.Remove(partida.First()); return(rodada); } if (partida.Any(x => x.Valor == ValorCarta.CompraDois)) { rodada.carta = partida.First(x => x.Valor == ValorCarta.CompraDois); rodada.Resultado = ResultadoRodada.CompraDois; rodada.corDeclarada = rodada.carta.Cor; deck.Remove(rodada.carta); return(rodada); } if (partida.Any(x => x.Valor == ValorCarta.Pular)) { rodada.carta = partida.First(x => x.Valor == ValorCarta.Pular); rodada.Resultado = ResultadoRodada.Pular; rodada.corDeclarada = rodada.carta.Cor; deck.Remove(rodada.carta); return(rodada); } if (partida.Any(x => x.Valor == ValorCarta.Inverter)) { rodada.carta = partida.First(x => x.Valor == ValorCarta.Inverter); rodada.Resultado = ResultadoRodada.InverteJogo; rodada.corDeclarada = rodada.carta.Cor; deck.Remove(rodada.carta); return(rodada); } var corPartida = partida.Where(x => x.Cor == descarteAtual.Cor); var valorPartida = partida.Where(x => x.Valor == descarteAtual.Valor); if (corPartida.Any() && valorPartida.Any()) { var correspondingColor = deck.Where(x => x.Cor == corPartida.First().Cor); var correspondingValue = deck.Where(x => x.Valor == valorPartida.First().Valor); if (correspondingColor.Count() >= correspondingValue.Count()) { rodada.carta = corPartida.First(); rodada.corDeclarada = rodada.carta.Cor; deck.Remove(corPartida.First()); return(rodada); } else { rodada.carta = valorPartida.First(); rodada.corDeclarada = rodada.carta.Cor; deck.Remove(valorPartida.First()); return(rodada); } //Seleciona a melhor carta } else if (corPartida.Any()) { rodada.carta = corPartida.First(); rodada.corDeclarada = rodada.carta.Cor; deck.Remove(corPartida.First()); return(rodada); } else if (valorPartida.Any()) { rodada.carta = valorPartida.First(); rodada.corDeclarada = rodada.carta.Cor; deck.Remove(valorPartida.First()); return(rodada); } //Deixar troca cor por ultimo if (partida.Any(x => x.Valor == ValorCarta.TrocaCor)) { rodada.carta = partida.First(x => x.Valor == ValorCarta.TrocaCor); rodada.corDeclarada = selecionarCor(); rodada.Resultado = ResultadoRodada.TrocaCor; deck.Remove(rodada.carta); return(rodada); } //Passa o resultado para a rodada rodada.Resultado = ResultadoRodada.Comprarjogar; return(rodada); }