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