Пример #1
0
        public IActionResult PlayTurn([FromQuery] string cards, [FromQuery] string money, [FromQuery] string cardHistory)
        {
            var parameters = new TurnParams
            {
                CurrentCards = cards.Split(',').Select(x => x.ToUpperInvariant()).ToArray(),
                CardHistory  = cardHistory.Split(',').Select(x => x.ToUpperInvariant()).ToArray(),
                MoneyInHand  = int.Parse(money)
            };

            return(Ok(_processor.Process(parameters)));
        }
        public string Process(TurnParams parameters)
        {
            var currentScore = GetScore(parameters.CurrentCards);

            var finalDecision = GetBasicDecision(currentScore);

            finalDecision = GetCountedDecision(finalDecision, currentScore, parameters.CardHistory);

            if (finalDecision == Move.DOUBLE && (parameters.MoneyInHand < (BetAmount * 2) || parameters.CurrentCards.Length != 2))
            {
                finalDecision = Move.HIT;
            }

            if (finalDecision != Move.DOUBLE && finalDecision != Move.HIT && finalDecision != Move.STAND)
            {
                finalDecision = Move.STAND;
            }

            return(finalDecision.ToString());
        }