Exemple #1
0
        int AddPlayersToHandAndGetSmallBlindPosition(string smallBlindPlayerName)
        {
            int smallBlindPosition = 0;
            int relativeSeatNumber = 0;

            foreach (KeyValuePair <int, PlayerSeatsParser.PlayerData> playerSeat in PlayerSeatsParser.PlayerSeats)
            {
                IAquiredPokerPlayer aquiredPlayer = _aquiredPlayerMake.New
                                                    .InitializeWith(playerSeat.Value.Name, playerSeat.Value.Stack);

                aquiredPlayer.RelativeSeatNumber = relativeSeatNumber;
                aquiredPlayer.SeatNumber         = playerSeat.Key;

                if (aquiredPlayer.Name == smallBlindPlayerName)
                {
                    smallBlindPosition = aquiredPlayer.RelativeSeatNumber;
                }

                AquiredPokerHand.AddPlayer(aquiredPlayer);

                relativeSeatNumber++;
            }

            return(smallBlindPosition);
        }
Exemple #2
0
        void ParsePlayers(string smallBlindPlayerName)
        {
            int smallBlindPosition = AddPlayersToHandAndGetSmallBlindPosition(smallBlindPlayerName);

            SetPlayersPositionsRelativeTo(smallBlindPosition);

            ParsePlayersHoleCards();

            ParsePlayersActions();

            AquiredPokerHand.SortPlayersByPosition();
        }
Exemple #3
0
        RelativeRatioResult ConvertPreflopHeadsUpHand()
        {
            _stub
            .Value(For.HoleCards).Is(string.Empty);

            const double smallBlind         = 1.0;
            const double bigBlind           = 2.0;
            const double pot                = smallBlind + bigBlind;
            const double toCall             = bigBlind;
            const int    totalPlayers       = 2;
            const int    smallBlindPosition = 0;
            const int    bigBlindPosition   = 1;

            var          action1        = new AquiredPokerAction(ActionTypes.C, smallBlind);
            const double relativeRatio1 = smallBlind / pot;
            const double pot1           = pot + smallBlind;

            var          action2        = new AquiredPokerAction(ActionTypes.R, toCall * 2);
            const double relativeRatio2 = 2;
            const double pot2           = pot1 + (toCall * 2);

            var          action3        = new AquiredPokerAction(ActionTypes.R, toCall * 2 * 3);
            const double relativeRatio3 = 3;
            const double pot3           = pot2 + (toCall * 2 * 3);

            var          action4        = new AquiredPokerAction(ActionTypes.C, toCall * 2 * 3);
            const double relativeRatio4 = (toCall * 2 * 3) / pot3;

            IAquiredPokerPlayer player1 = new AquiredPokerPlayer(
                _stub.Some <long>(), smallBlindPosition, _stub.Out <string>(For.HoleCards))
                                          .AddRound(
                new AquiredPokerRound()
                .Add(action1)
                .Add(action3));

            player1.Name     = "player1";
            player1.Position = smallBlindPosition;

            IAquiredPokerPlayer player2 = new AquiredPokerPlayer(
                _stub.Some <long>(), bigBlindPosition, _stub.Out <string>(For.HoleCards))
                                          .AddRound(
                new AquiredPokerRound()
                .Add(action2)
                .Add(action4));

            player2.Name     = "player2";
            player2.Position = bigBlindPosition;

            IAquiredPokerHand aquiredHand =
                new AquiredPokerHand(
                    _stub.Valid(For.Site, "site"),
                    _stub.Out <ulong>(For.GameId),
                    _stub.Out <DateTime>(For.TimeStamp),
                    smallBlind,
                    bigBlind,
                    totalPlayers)
                .AddPlayer(player1)
                .AddPlayer(player2);

            IConvertedPokerHand convertedHand =
                new ConvertedPokerHand(aquiredHand)
                .InitializeWith(aquiredHand)
                .AddPlayersFrom(aquiredHand, pot, _convertedPlayerMake);

            _converter
            .InitializeWith(aquiredHand, convertedHand, pot, toCall)
            .ConvertPreflop();

            var player1FirstRound = convertedHand[smallBlindPosition][Streets.PreFlop];
            var player2FirstRound = convertedHand[bigBlindPosition][Streets.PreFlop];

            return(new RelativeRatioResult(convertedHand, player1FirstRound, player2FirstRound, relativeRatio1, relativeRatio2, relativeRatio3, relativeRatio4));
        }
Exemple #4
0
        RelativeRatioResult ConvertPreflopThreePlayersHand()
        {
            _stub
            .Value(For.HoleCards).Is(string.Empty);

            const double smallBlind = 1.0;
            const double bigBlind   = 2.0;
            const double pot        = smallBlind + bigBlind;

            const int totalPlayers       = 3;
            const int smallBlindPosition = 0;
            const int bigBlindPosition   = 1;
            const int buttonPosition     = 2;

            var          action1        = new AquiredPokerAction(ActionTypes.B, bigBlind);
            const double relativeRatio1 = bigBlind / pot;
            const double pot1           = pot + bigBlind;

            var          action2        = new AquiredPokerAction(ActionTypes.C, bigBlind);
            const double relativeRatio2 = bigBlind / pot1;
            const double pot2           = pot1 + bigBlind;

            var          action3        = new AquiredPokerAction(ActionTypes.R, bigBlind * 3);
            const double relativeRatio3 = 3;
            const double pot3           = pot2 + (bigBlind * 3);

            var          action4        = new AquiredPokerAction(ActionTypes.R, bigBlind * 3 * 2);
            const double relativeRatio4 = 2;
            const double pot4           = pot3 + (bigBlind * 3 * 2);

            var          action5        = new AquiredPokerAction(ActionTypes.C, bigBlind * 3 * 2);
            const double relativeRatio5 = (bigBlind * 2 * 3) / pot4;

            var action6 = new AquiredPokerAction(ActionTypes.F, 1.0);

            // Small Blind
            IAquiredPokerPlayer player1 = new AquiredPokerPlayer(
                _stub.Some <long>(), smallBlindPosition, _stub.Out <string>(For.HoleCards))

                                          // Preflop
                                          .AddRound(
                new AquiredPokerRound()
                .Add(new AquiredPokerAction(ActionTypes.C, 0.5)))

                                          // Flop
                                          .AddRound(
                new AquiredPokerRound()
                .Add(action1)
                .Add(action4));

            player1.Name     = "player1";
            player1.Position = smallBlindPosition;

            // Big Blind
            IAquiredPokerPlayer player2 = new AquiredPokerPlayer(
                _stub.Some <long>(), bigBlindPosition, _stub.Out <string>(For.HoleCards))

                                          // Preflop
                                          .AddRound(
                new AquiredPokerRound()
                .Add(new AquiredPokerAction(ActionTypes.X, 1.0)))

                                          // Flop
                                          .AddRound(
                new AquiredPokerRound()
                .Add(action2)
                .Add(action5));

            player2.Name     = "player2";
            player2.Position = bigBlindPosition;

            // Button
            IAquiredPokerPlayer player3 = new AquiredPokerPlayer(
                _stub.Some <long>(), buttonPosition, _stub.Out <string>(For.HoleCards))

                                          // Preflop
                                          .AddRound(
                new AquiredPokerRound()
                .Add(new AquiredPokerAction(ActionTypes.C, 1.0)))

                                          // Flop
                                          .AddRound(
                new AquiredPokerRound()
                .Add(action3)
                .Add(action6));

            player3.Name     = "player3";
            player3.Position = buttonPosition;

            IAquiredPokerHand aquiredHand =
                new AquiredPokerHand(
                    _stub.Valid(For.Site, "site"),
                    _stub.Out <ulong>(For.GameId),
                    _stub.Out <DateTime>(For.TimeStamp),
                    smallBlind,
                    bigBlind,
                    totalPlayers)
                .AddPlayer(player1)
                .AddPlayer(player2)
                .AddPlayer(player3);

            IConvertedPokerHand convertedHand =
                new ConvertedPokerHand(aquiredHand)
                .AddPlayersFrom(aquiredHand, pot, _convertedPlayerMake);

            _converter
            .InitializeWith(aquiredHand, convertedHand, pot, bigBlind)
            .ConvertPreflop();

            // Reset Values
            _converter.PotProp    = pot;
            _converter.ToCallProp = bigBlind;

            _converter.ConvertFlopTurnAndRiver();

            IConvertedPokerRound player1FlopRound = convertedHand[smallBlindPosition][Streets.Flop];
            IConvertedPokerRound player2FlopRound = convertedHand[bigBlindPosition][Streets.Flop];
            IConvertedPokerRound player3FlopRound = convertedHand[buttonPosition][Streets.Flop];

            return(new RelativeRatioResult(
                       convertedHand,
                       player1FlopRound,
                       player2FlopRound,
                       player3FlopRound,
                       relativeRatio1,
                       relativeRatio2,
                       relativeRatio3,
                       relativeRatio4,
                       relativeRatio5));
        }