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