Example #1
0
        public static async Task <GameResult> PlayGame(string word, IEnumerable <string> possibleWords, IPlayer player, TurnHandler handler = null)
        {
            var game      = new Game(word);
            var usedChars = new Collection <char>();

            while (!game.IsWon)
            {
                var guess = await player.GuessAsync(game.CurrentStatus, usedChars).ConfigureAwait(false);

                usedChars.Add(guess);
                game.ApplyGuess(guess);
                handler?.Invoke(guess, game.CurrentStatus, game.Guesses, game.Misses, game.IsWon);
            }
            return(new GameResult()
            {
                Turns = game.Guesses,
                Guesses = usedChars,
                Misses = game.Misses,
                Word = word
            });
        }