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()); } }
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. } } } }