public void PerguntarAumentarPreRiver() { foreach (var jog in this.Mesa.PartidasAtuais) { IJogador jogador = jog.Key; IPartida partida = jog.Value; IJogador banca = partida.Banca; IAcaoTomada acaoJogador = jogador.Turn(jog.Value.CartasMesa, 0); switch (acaoJogador.Acao) { case AcoesDecisaoJogador.Check: partida.AddRodada(new RodadaTHB(TipoRodada.River, partida.PoteAgora, partida.CartasMesa)); break; case AcoesDecisaoJogador.Call: partida.AddToPote(jogador.PagarValor(this.Mesa.RegrasMesaAtual.River), TipoJogadorTHB.Jogador); partida.AddToPote(banca.PagarValor(this.Mesa.RegrasMesaAtual.River), TipoJogadorTHB.Banca); partida.AddRodada(new RodadaTHB(TipoRodada.River, partida.PoteAgora, partida.CartasMesa)); break; case AcoesDecisaoJogador.Raise: partida.AddToPote(jogador.PagarValor(this.Mesa.RegrasMesaAtual.River), TipoJogadorTHB.Jogador); partida.AddToPote(banca.PagarValor(this.Mesa.RegrasMesaAtual.River), TipoJogadorTHB.Banca); partida.AddRodada(new RodadaTHB(TipoRodada.River, partida.PoteAgora, partida.CartasMesa)); break; default: throw new Exception("Ação não esperada."); } } this.EncerrarPartidasTerminadas(); }
public void PergutarQuemIraJogar() { IList <IJogador> jogadoresPararamDeJogar = new List <IJogador>(); foreach (IJogador j in this.Mesa.JogadoresNaMesa) { IAcaoTomada a = j.PreJogo(this.Mesa.RegrasMesaAtual.Ant); switch (a.Acao) { case AcoesDecisaoJogador.Play: this.Mesa.PartidasAtuais.Add(j, new Partida(j.SeqProximaPartida, j, this.banca, CartasAhRetirarDeck())); break; case AcoesDecisaoJogador.Stop: jogadoresPararamDeJogar.Add(j); break; default: throw new JogadorException("Jogador devolveu ação não possível"); } } foreach (IJogador j in jogadoresPararamDeJogar) { this.RetirarJogadorDaMesa(j); } }
public void PerguntarPagarFlop() { foreach (var jog in this.Mesa.PartidasAtuais) { IPartida partida = jog.Value; IJogador jogador = jog.Key; IJogador banca = partida.Banca; IRodada rodadaAtual = partida.Rodadas.Last(); IRodada proximaRodada; IAcaoTomada acaoTomada = jogador.PreFlop(this.Mesa.RegrasMesaAtual.Flop); rodadaAtual.AddAcaoTomada(acaoTomada); switch (acaoTomada.Acao) { case AcoesDecisaoJogador.PayFlop: partida.AddToPote(jogador.PagarValor(this.Mesa.RegrasMesaAtual.Flop), TipoJogadorTHB.Jogador); partida.AddToPote(banca.PagarValor(this.Mesa.RegrasMesaAtual.Flop), TipoJogadorTHB.Banca); proximaRodada = new RodadaTHB(TipoRodada.Flop, partida.PoteAgora, partida.CartasMesa); break; case AcoesDecisaoJogador.Fold: proximaRodada = new RodadaTHB(TipoRodada.FimDeJogo, partida.PoteAgora, partida.CartasMesa); partida.JogadorGanhador = VencedorPartida.Banca; break; default: throw new Exception("Ação não esperada."); } partida.AddRodada(proximaRodada); } this.EncerrarPartidasTerminadas(); }
public void AddAcaoTomada(IAcaoTomada acao) => this.pilhaAcoes.Add(acao);