示例#1
0
 public void Reset()
 {
     Deck.Restore();
     Player1.Muck();
     Player2.Muck();
     TableCards.Clear();
     Winner = null;
 }
 public void ClearTable()
 {
     foreach (Hand h in players)
     {
         h.ClearHand();
     }
     table.Clear();
 }
示例#3
0
 /// <summary>
 /// 发牌桌的牌
 /// </summary>
 private void DealToTable()
 {
     TableCards.Clear();
     for (int i = 1; i <= GameConfig.Table_Cards_Count; i++)
     {
         var card = PickCardFromPile();
         TableCards.Add(i, card);
     }
 }
示例#4
0
        public void InitCardPile()
        {
            TableCards.Clear();

            // CleanPlayerCards();

            if (RemainCards.Count < 52)
            {
                _RemainCards = InitNewCards();
            }
        }
示例#5
0
        public void Start()
        {
            Func <Action, bool> conductBettingRoungAndReportIfRoundIsOver = currentRound =>
            {
                currentRound();
                return(Ready.Count(x => x) < 2);
            };
            Action setReadyPlayers = () =>
            {
                for (int i = 0; i < 10; i++)
                {
                    Ready[i] = PlayerBySeat.ContainsKey(i);
                }
            };

            setReadyPlayers();
            SetInitialRoles();
            while (true)
            {
                CheckWinner();
                if (Count < 2)
                {
                    break;
                }
                Deck.Shuffle();
                TableCards.Clear();
                setReadyPlayers();
                // Цикл раундов пока есть хотя бы 2 игрока
                if (conductBettingRoungAndReportIfRoundIsOver(PreFlop))
                {
                    continue;
                }
                if (conductBettingRoungAndReportIfRoundIsOver(Flop))
                {
                    continue;
                }
                if (conductBettingRoungAndReportIfRoundIsOver(Turn))
                {
                    continue;
                }
                if (conductBettingRoungAndReportIfRoundIsOver(River))
                {
                    continue;
                }
                ShowDown();
                Update();
            }
        }
示例#6
0
        /// <summary>
        /// Get the winner
        /// </summary>
        /// <returns>The player who won</returns>
        private Player FindWinner()
        {
            CardHand.Worth?worth  = null;
            Player         winner = null;

            foreach (Player p in GetActivePlayers)
            {
                p.AddCards(TableCards);
                CardHand.Worth nextWorth = p.GetHandsWorth();
                if (null == worth || worth < nextWorth)
                {
                    worth  = nextWorth;
                    winner = p;
                }
            }

            TableCards.Clear();

            return(winner);
        }