private bool Guess(IGuess guess)
        {
            if (guess.Roll == CurrentRoll)
            {
                return(false);
            }

            _guesses.Add(guess);
            CurrentRoll = guess.Roll;

            return(guess.Correct);
        }
        public IGuessResult GetResult(IGuess guess, IBullsAndCowsData data)
        {
            var guessingPlayer = data.Players.All()
                                 .FirstOrDefault(x => x.Id == guess.GuessingUserId);

            if (guessingPlayer == null)
            {
                throw new ArgumentException("Player cant be found. Make sure the given user id is correct.");
            }

            var currentGame = data.Games.All()
                              .FirstOrDefault(x => (x.FirstPlayerId == guessingPlayer.Id || x.SecondPlayerId == guessingPlayer.Id) &&
                                              x.State == GameState.FirstPlayerTurn || x.State == GameState.SecondPlayerTurn);

            if (currentGame == null)
            {
                throw new Exception("The current player game is invalid");
            }

            int?secretNumber;

            if (currentGame.FirstPlayerId == guess.GuessingUserId)
            {
                secretNumber = currentGame.SecondPlayerSecretNumber;
            }
            else
            {
                secretNumber = currentGame.FirstPlayerSecretNumber;
            }

            var result = this.CompareToSecret(secretNumber.ToString(), guess.GuessNumber.ToString());

            if (result.HasWon)
            {
                if (currentGame.FirstPlayerId == guess.GuessingUserId)
                {
                    result.GameResult = GameResult.WonByFirstPlayer;
                }
                else
                {
                    result.GameResult = GameResult.WonBySecondPlayer;
                }
            }

            return(result);
        }
        public IGuessResult GetResult(IGuess guess, IBullsAndCowsData data)
        {
            var guessingPlayer = data.Players.All()
                .FirstOrDefault(x => x.Id == guess.GuessingUserId);

            if (guessingPlayer == null)
            {
                throw new ArgumentException("Player cant be found. Make sure the given user id is correct.");
            }

            var currentGame = data.Games.All()
                .FirstOrDefault(x => (x.FirstPlayerId == guessingPlayer.Id || x.SecondPlayerId == guessingPlayer.Id) &&
                x.State == GameState.FirstPlayerTurn || x.State == GameState.SecondPlayerTurn);

            if (currentGame == null)
            {
                throw new Exception("The current player game is invalid");
            }

            int? secretNumber;
            if (currentGame.FirstPlayerId == guess.GuessingUserId)
            {
                secretNumber = currentGame.SecondPlayerSecretNumber;
            }
            else
            {
                secretNumber = currentGame.FirstPlayerSecretNumber;
            }

            var result = this.CompareToSecret(secretNumber.ToString(), guess.GuessNumber.ToString());

            if (result.HasWon)
            {
                if (currentGame.FirstPlayerId == guess.GuessingUserId)
                {
                    result.GameResult = GameResult.WonByFirstPlayer;
                }
                else
                {
                    result.GameResult = GameResult.WonBySecondPlayer;
                }
            }

            return result;
        }
Exemple #4
0
 public static int Run(HangmanGame game, IGuessingStrategy strategy, bool debug)
 {
     while (game.GameStatus == HangmanGame.Status.KEEP_GUESSING)
     {
         if (debug)
         {
             Console.Error.WriteLine(game.ToString());
         }
         IGuess guess = strategy.NextGuess(game);
         if (debug)
         {
             Console.Error.WriteLine(guess.ToString());
             Console.Error.WriteLine(strategy.ToString());
         }
         guess.MakeGuess(game);
     }
     if (debug)
     {
         Console.Error.WriteLine(game.ToString());
     }
     return(game.CurrentScore);
 }
Exemple #5
0
        public void StartHangMan()
        {
            bool replay = true;

            while (replay)
            {
                Console.Clear();

                var topic = TopicSelection();

                var word = _manageDb.SelectWordsListToRandom(topic, topicNumber);
                if (word == null)
                {
                    _messagesRepository.NoWordLeftMessage();
                }
                else
                {
                    _hiddenWordManager = new HiddenWordManager(ltName, ltCity, country, furniture);
                    bool guessingAllowed = true;
                    _messagesRepository.HangmanPictureMessage(beginLives);
                    Console.WriteLine();
                    Console.WriteLine(_hiddenWordManager.GetHiddedWordStructure());

                    while (guessingAllowed)
                    {
                        _guess = new Guess(_messagesRepository.WordInputMessage(), _hiddenWordManager);

                        if (_guess.IsWordGuessed)
                        {
                            SelectedWordGuessMechanics(topicNumber);
                            guessingAllowed = false;
                        }
                        else
                        {
                            _guess.CheckSelectedWordIsCorrect(topicNumber);

                            if (_hiddenWordManager.IncorrectGuesesCount == maxLives)
                            {
                                _messagesRepository.HangmanPictureMessage(maxLives);
                                _messagesRepository.LostGameMessage(word.Text);
                                guessingAllowed = false;
                            }
                            else
                            {
                                Console.Clear();
                                _messagesRepository.HangmanPictureMessage(_hiddenWordManager.IncorrectGuesesCount);
                                _messagesRepository.IncorrectLettersListMessage(_hiddenWordManager.HiddenWord.IncorrectGueses);

                                Console.WriteLine(_hiddenWordManager.GetHiddedWordStructure());
                                if (!_hiddenWordManager.HasHiddenLetters)
                                {
                                    _messagesRepository.WinGameMessage(word.Text);
                                    guessingAllowed = false;
                                }
                            }
                        }
                    }
                }
                _manageDb.RemoveWordFromSeletedWordsList(topicNumber);
                SelectPlayerScoreBoard(topicNumber);
                _playerManager.AddPlayerScore(SelectPlayerScoreBoard(topicNumber));
                replay = _messagesRepository.RepeatGameMessage();
            }
        }