コード例 #1
0
        private IOutputSpeech CheckGuess(string playerId, Dictionary <string, Slot> intentSlots)
        {
            var colour = intentSlots["Colour"].Value;
            var number = intentSlots["Value"].Value;
            var suit   = intentSlots["Suit"].Value;

            var assumption = new Assumption(colour, number, suit);

            if (assumption.IsValid)
            {
                var outcome = _dealer.TakeTurn(playerId, assumption);

                if (outcome is TurnErrorOutcome)
                {
                    var errorOutcome = outcome as TurnErrorOutcome;
                    return(new PlainTextOutputSpeech
                    {
                        Text = errorOutcome.ErrorReason
                    });
                }
                else if (outcome is TurnSuccessOutcome)
                {
                    var successOutcome = outcome as TurnSuccessOutcome;

                    var message = new StringBuilder();

                    message.Append(successOutcome.AssumptionResult.Success ? "Nice one. " : "Nope. ");

                    message.Append($"{successOutcome.DrawnCard.value} of {successOutcome.DrawnCard.suit}. ");

                    var game = successOutcome.AssumptionResult.GameState;
                    message.Append($"Your score is {game.score} with {successOutcome.AssumptionResult.GameState.cardsRemainingCount} cards remaining. ");

                    message.Append(successOutcome.AssumptionResult.GameState.cardsRemainingCount == 0
                        ? $"No more cards in the deck. Your final score was {game.score}. Ask me to start a new game? "
                        : "Take a guess? ");

                    return(new PlainTextOutputSpeech
                    {
                        Text = message.ToString()
                    });
                }

                return(new PlainTextOutputSpeech
                {
                    Text = "Hmm, something went wrong. Try again."
                });
            }

            return(new PlainTextOutputSpeech
            {
                Text = "I don't know what you mean. I'm just here to deal the cards. Try again."
            });
        }