コード例 #1
0
 protected override void handOutCardsToPlayers()
 {
     foreach (IPlayer player in Players)
     {
         player.HoleCards = new List <ICard>()
         {
             PlayingCards[0], PlayingCards[1]
         };
         PlayingCards.Remove(PlayingCards.First());
         PlayingCards.Remove(PlayingCards.First());
     }
 }
コード例 #2
0
        protected override void onLicitation()
        {
            foreach (GameStage gameStage in Enum.GetValues(typeof(GameStage)))
            {
                IPlayer nextPlayer = null;

                if (gameStage == GameStage.Flop)
                {
                    for (int i = 0; i < 3; ++i)
                    {
                        Table.CommunityCards.Add(PlayingCards.First());
                        PlayingCards.Remove(PlayingCards.First());
                    }
                }
                else if (gameStage != GameStage.Preflop)
                {
                    Table.CommunityCards.Add(PlayingCards.First());
                    PlayingCards.Remove(PlayingCards.First());
                }

                if (gameStage == GameStage.Preflop)
                {
                    nextPlayer = GetNextActivePlayer(Players.Where(x => x.Blind == Blind.Big).First());
                }
                else
                {
                    nextPlayer = Players.Where(x => x.Blind == Blind.Small).First();
                }

                notify();

                while (nextPlayer != null && (!allPlayersTookAction() || isBiggerBetToCall() || !lastPlayerCalled()) && !isOnePlayerActiveLeft() && !allActivePlayersChecked() && !allButOnePlayerFolded())
                {
                    if (nextPlayer != null && nextPlayer.CanTakeAction)
                    {
                        while (!takeAction(nextPlayer))
                        {
                            ;
                        }
                    }

                    notify();

                    nextPlayer = GetNextActivePlayer(nextPlayer);
                }

                foreach (IPlayer activePlayer in Players.Where(x => x.PlayerState != PlayerState.Folded))
                {
                    Table.Pot       += activePlayer.Bet;
                    activePlayer.Bet = 0;

                    if (activePlayer.CanTakeAction && Players.Where(x => x.CanTakeAction).Count() > 1)
                    {
                        activePlayer.PlayerState = PlayerState.Active;
                    }

                    if (Players.Where(x => x.PlayerState == PlayerState.Folded).Count() == Players.Count - 1)
                    {
                        return; //if everyone folded except one, stop licitation round.
                    }
                }
            }
        }