private bool validarTruco(Jogador jogador, Truco pedido) { //Validando o truco if (jogadores.Where(x => Equipe.BuscaID(x.IDEquipe).PontosEquipe >= 12).Count() > 0) { log.logar($"Jogador {jogador} trucou na mão de doze. Perdeu"); correu = jogador.IDEquipe; return(false); } if (jogador.IDEquipe == EquipeTrucante) { log.logar($"Jogador {jogador} trucou, mas equipe já está trucando"); return(false); } if (this.pontos >= pedido.pontosTruco()) { log.logar($"Jogador {jogador} pediu {pedido}, mas a partida já está valendo mais"); return(false); } if (Truco.jogo.pontosTruco() == this.pontos) { log.logar("Partida já está valendo jogo"); return(false); } return(true); }
private int valorJogoTruco(Truco valor) { if (valor == Truco.truco) { return(3); } if (valor == Truco.seis) { return(6); } if (valor == Truco.nove) { return(9); } if (valor == Truco.doze) { return(12); } if (valor == Truco.jogo) { return(15); } else { return(0); } }
private Tuple <Jogador, Escolha> aceita(Jogador jogador, Truco pedido) { List <Tuple <Jogador, Escolha> > aceite = new List <Tuple <Jogador, Escolha> >(); foreach (var item in jogadores) { if (item != jogador) { aceite.Add(new Tuple <Jogador, Escolha>(item, item.trucado(jogador, pedido, Manilha))); } } var equip = aceite.Where(x => x.Item1.IDEquipe != jogador.IDEquipe).ToList(); if (equip.Select(x => x.Item2).Contains(Escolha.aumentar)) { return(equip.Where(x => x.Item2 == Escolha.aumentar).First()); } else if (equip.Select(x => x.Item2).Contains(Escolha.aceitar)) { return(equip.Where(x => x.Item2 == Escolha.aceitar).First()); } else { return(equip.Where(x => x.Item2 == Escolha.correr).First()); } }
protected virtual void OlharTruco(Jogador jogador, Truco pedido) { if (!validarTruco(jogador, pedido)) { return; } log.logar($"{jogador} pedindo {pedido}"); //Perguntando jogadores se aceitam Tuple <Jogador, Escolha> aceite = aceita(jogador, pedido); Truco pedidoAtual = pedido; switch (aceite.Item2) { case Escolha.correr: log.logar($"Equipe {Equipe.BuscaID(aceite.Item1.IDEquipe)} correu"); correu = aceite.Item1.IDEquipe; break; case Escolha.aceitar: this.pontos = pedido.pontosTruco(); EquipeTrucante = jogador.IDEquipe; log.logar($"{aceite.Item1} aceitou o truco"); break; case Escolha.aumentar: #region aumentar while (true) { this.pontos = pedidoAtual.pontosTruco(); pedidoAtual = pedidoAtual.proximo(); aceite = aceita(aceite.Item1, pedidoAtual); switch (aceite.Item2) { case Escolha.correr: correu = aceite.Item1.IDEquipe; return; case Escolha.aceitar: this.pontos = pedidoAtual.pontosTruco(); EquipeTrucante = jogador.IDEquipe; return; case Escolha.aumentar: if (pedidoAtual == Truco.jogo) { this.pontos = 15; EquipeTrucante = aceite.Item1.IDEquipe; return; } break; } } #endregion default: break; } }
public override Escolha trucado(Jogador trucante, Truco valor, Carta manilha) { Escolha escolhi = Escolha.correr; for (int i = 0; i < _mao.Count; i++) { if (_mao[i].valor(manilha) == 14) { return(Escolha.aumentar); } else if (_mao[i].valor(manilha) >= 11) { escolhi = Escolha.aceitar; } } return(escolhi); }
public override Escolha trucado(Jogador trucante, Truco valor, Carta manilha) { for (int i = 0; i < _mao.Count; i++) { if (_mao[i].valor(manilha) >= 13) { log.logar("Seissss seu bosta!", TipoLog.logJogador); return(Escolha.aumentar); } else { if (_mao[i].valor(manilha) > 10) { return(Escolha.aceitar); } } } return(Escolha.correr); }
public Player(string n, Truco t, BotConnection b, InterfazPlayer i) { nombre = n; _truco = t; _bot = b; if (_bot != null) { _bot.setPlayer(this); } _interfaz = i; if (_interfaz != null) { _interfaz.asignarNombre(n); } _cartas = new List <Carta>(); _cartasEnMesa = new List <Carta>(); _puntaje = 0; _partidasGanadas = 0; }
public static Truco proximo(this Truco pedido) { switch (pedido) { case Truco.truco: return(Truco.seis); case Truco.seis: return(Truco.nove); case Truco.nove: return(Truco.doze); case Truco.doze: return(Truco.jogo); default: return(Truco.truco); } }
public static int pontosTruco(this Truco pedido) { switch (pedido) { case Truco.truco: return(3); case Truco.seis: return(6); case Truco.nove: return(9); case Truco.doze: return(12); case Truco.jogo: return(15); default: return(1); } }
// Cuando los dos bots están conectados comienzo el juego instanciando un Truco. private IEnumerator _empezarJuego() { Truco truco = new Truco(_nombrePlayer1, _bot1, interfazPlayer1, _nombrePlayer2, _bot2, interfazPlayer2, _partidas, resultado); yield break; }
public override Escolha trucado(Jogador trucante, Truco pedido, Carta manilha) { if (trucante.IDEquipe == IDEquipe) { equipeTrucante = IDEquipe; trucoAtual = pedido; return(Escolha.aceitar); } else { switch (pedido) { case Truco.truco: if (90 > probabilidadeVitoria(manilha) && probabilidadeVitoria(manilha) > 50) { return(Escolha.aceitar); } else if (probabilidadeVitoria(manilha) >= 80) { return(Escolha.aumentar); } else { return(Escolha.correr); } case Truco.seis: if ((Equipe.BuscaID(IDEquipe).PontosEquipe >= 9 && probabilidadeVitoria(manilha) > 75) || (probabilidadeVitoria(manilha) < 90 && probabilidadeVitoria(manilha) > 75)) { return(Escolha.aceitar); } else if (probabilidadeVitoria(manilha) >= 90) { return(Escolha.aumentar); } else { return(Escolha.correr); } case Truco.nove: if ((Equipe.BuscaID(IDEquipe).PontosEquipe >= 6 && probabilidadeVitoria(manilha) > 75) || (probabilidadeVitoria(manilha) < 90 && probabilidadeVitoria(manilha) > 75)) { return(Escolha.aceitar); } else if (probabilidadeVitoria(manilha) >= 90) { return(Escolha.aumentar); } else { return(Escolha.correr); } case Truco.doze: if ((Equipe.BuscaID(IDEquipe).PontosEquipe >= 3 && probabilidadeVitoria(manilha) > 75) || (probabilidadeVitoria(manilha) < 90 && probabilidadeVitoria(manilha) > 75)) { return(Escolha.aceitar); } else if (probabilidadeVitoria(manilha) >= 90) { return(Escolha.aumentar); } else { return(Escolha.correr); } case Truco.jogo: if (probabilidadeVitoria(manilha) > 80) { return(Escolha.aceitar); } else { return(Escolha.correr); } default: return(Escolha.aceitar); } } }
public override Escolha trucado(Jogador trucante, Truco valor, Carta manilha) { int ptsMinhaEqp = Equipe.BuscaID(this.IDEquipe).PontosEquipe; int ptsEqpAdv = Equipe.BuscaID(trucante.IDEquipe).PontosEquipe; int x = ManilhasNaMao(manilha); if ((ptsEqpAdv > ptsMinhaEqp && ptsEqpAdv + valorJogoTruco(valor) < 15) && ptsMinhaEqp - ptsEqpAdv > valorJogoTruco(valor)) { if (cartasUsadas.Count < 4 && x > 0) { return(Escolha.aceitar); } if (cartasUsadas.Count < 4 && _mao[0].valor(manilha) > 8) { return(Escolha.aceitar); } if (ganhoPrimeira && x > 0) { return(Escolha.aumentar); } if (ganhoPrimeira && (cartasUsadas.Count > 3 || cartasUsadas.Count < 8) && (_mao[0].valor(manilha) > 8 || _mao[1].valor(manilha) > 8)) { return(Escolha.aceitar); } if ((cartasUsadas.Count > 3 || cartasUsadas.Count < 8) && (_mao[0].valor(manilha) > 10)) { return(Escolha.aceitar); } if (ganhoPrimeira && (_mao[0].valor(manilha) > 7)) { return(Escolha.aceitar); } } return(Escolha.correr); //if (x >= 2) // return Escolha.aumentar; //if (x == 1) // return Escolha.aceitar; //if (ptsEqpAdv > 9 && ptsMinhaEqp < 5) // return Escolha.aumentar; //if (_mao.Count == 3) //{ // if (_mao[0].valor(manilha) > 7) // return Escolha.aceitar; //} //if (_mao.Count == 2) //{ // if (_mao[0].valor(manilha) > 7) // return Escolha.aceitar; //} //if (_mao.Count == 0 && cartasUsadas.Last().valor(manilha) > 8) // return Escolha.aceitar; //if (_mao.Count == 1 &&_mao[0].valor(manilha) <= 3) // return Escolha.correr; //else // return Escolha.aceitar; }
protected void trucar(Jogador jogador, Truco pedido) { truco(jogador, pedido); }
public virtual Escolha trucado(Jogador trucante, Truco valor, Carta manilha) { return(Escolha.aceitar); }