public IGuessBehaviour GetGuess(PlayerType playerType, IGuessSubject guessSubject) { IGuessBehaviour guessBehaviour; IRandomGenerator randomGenerator = new RandomNumberGenerator(); switch (playerType) { case PlayerType.Random: guessBehaviour = new RandomGuess(); break; case PlayerType.Memory: guessBehaviour = new MemoryGuess(randomGenerator); break; case PlayerType.Thorough: guessBehaviour = new ThroughGuess(); break; case PlayerType.Cheater: guessBehaviour = new CheatingRandomGuess(randomGenerator, guessSubject); break; case PlayerType.ThoroughCheater: guessBehaviour = new CheatingThoroughGuess(guessSubject); break; default: throw new ArgumentOutOfRangeException(nameof(playerType), playerType, null); } return(guessBehaviour); }
public CheatingThoroughGuess(IGuessSubject guessSubject) { _guessSubject = guessSubject; _guessSubject.RegisterObserver(this); }
public Game(IGuessSubject guessSubject, IGuessFabric guessFabric, IRoundCalculator roundCalculator) { _guessSubject = guessSubject; _guessFabric = guessFabric; _roundCalculator = roundCalculator; }
public CheatingRandomGuess(IRandomGenerator randomGenerator, IGuessSubject guessSubject) { _randomGenerator = randomGenerator; _guessSubject = guessSubject; _guessSubject.RegisterObserver(this); }