예제 #1
0
 public void PrepareNewTree()
 {
     if (_settings.EvaluationStyle == AiMode.ExpectiMax && _pokerGame.CurrentRoundNumber() > 1)
     {
         _expectiMaxDecisionMaking.CreateNewTree(_pokerGame);
     }
 }
        public PlayerAction GetNextAction()
        {
            EVCalculator  ev        = new EVCalculator(_pokerGame, _pokerGame.Settings);
            List <Card>   evalCards = GetCardsToEvaluate();
            List <double> ExpectedValues;
            double        mtcWin  = 0,
                          mtcLoss = 0;

            if (_pokerGame.CurrentRoundNumber() > 1)
            {
                ExpectedValues = new List <double>(ev.CalculateMonteCarlo(_player.Cards, _pokerGame.Hand, _pokerGame.Settings));
                mtcWin         = ExpectedValues[0];
                mtcLoss        = ExpectedValues[1];
            }

            if (_pokerGame.CurrentRoundNumber() == 1)
            {
                return(PreFlop());
            }
            if (_pokerGame.CurrentRoundNumber() == 2 || _pokerGame.CurrentRoundNumber() == 3)
            {
                return(FlopTurn(mtcWin, mtcLoss));
            }
            if (_pokerGame.CurrentRoundNumber() == 4)
            {
                return(River(mtcWin, mtcLoss));
            }

            return(CheckFold());
        }
예제 #3
0
        public void CreateNewTree(PokerGame game)
        {
            TreeConstructor tc = new TreeConstructor(game, _data);

            _treeRoot       = tc.CreateTree(game.CurrentRoundNumber());
            _currentNode    = _treeRoot;
            _currentTarget  = null;
            _expectedAction = PlayerAction.None;
        }
예제 #4
0
 public void PrepareNewTree()
 {
     _pokerTree = new PokerTree(_pokerGame.CurrentHand().Street, _player, _settings, _pokerGame.Players[0].PreviousAction, _pokerGame.CurrentRoundNumber());
 }
예제 #5
0
 private void MainUpdate()
 {
     if (_prevRound < _game.CurrentRoundNumber())
     {
         RoundUpdate();
     }
     TurnUpdate();
 }