/// <summary> /// Constructor /// </summary> /// <param name="width">width of the maze to create</param> /// <param name="height">height of the maze to create</param> /// <param name="mice">number of mice to create</param> /// <param name="randomNumberGenerator">function for generating random numbers</param> /// <param name="mazeGenerator">instance to generate the maze</param> /// <param name="mouseGenerator">factory for the mice</param> public Game(int width, int height, int mice, RandomNumberGenerator randomNumberGenerator, IMazeGenerator mazeGenerator, MouseGenerator mouseGenerator) { mazeGenerator.Initialize(randomNumberGenerator); maze = mazeGenerator.Generate(width, height); targetField = new Position(randomNumberGenerator(0, width), randomNumberGenerator(0, height)); for (int i = 0; i < mice; ++i) { this.mice.Add(new GameViewAgent(randomNumberGenerator, mouseGenerator(), maze)); } }