/// <summary>
        /// Method that start the main logic of the game.
        /// </summary>
        /// <param name="output">Output renderer</param>
        /// <param name="input">Iput provider</param>
        /// <param name="cmmandLogger">Command logger</param>
        public static void Start(IRenderer output, IInputProvider input, ILogger cmmandLogger)
        {
            output.ShowInfoMessage("Please ente your name: ");
            string playerName = input.GetPlayerName();

            output.ShowInfoMessage("Please enter a dimension for the board the standard is 9x9");
            int dimension = input.GetPlayFieldDimensions();

            ICell playerCell = new Cell(new Position(dimension / 2, dimension / 2));
            IPlayField playField = null;
            var player = new Player.Player(playerName, playerCell);

            try
            {
                var playFieldGenerator = new StandardPlayFieldGenerator(player.CurentCell.Position, dimension, dimension);
                playField = new PlayField.PlayField(playFieldGenerator, player.CurentCell.Position, dimension, dimension);
            }
            catch (ArgumentOutOfRangeException e)
            {
                output.ShowInfoMessage(e.Message);
            }

            ICommandFactory commandFactory = new SimpleCommandFactory();
            IMementoCaretaker memory = new MementoCaretaker(new List<IMemento>());
            IScoreLadder ladder = ScoreLadder.Instance;
            IGameEngine gameEngine = new StandardGameEngine(output, input, playField, commandFactory, cmmandLogger, player,memory,ladder);
            gameEngine.Initialize(RandomNumberGenerator.Instance);
            gameEngine.Start();
        }
        public void TestGameEngineInitializeProperly()
        {
            Mock<IPlayField> mockPlayField = new Mock<IPlayField>();

            IGameEngine gameEngine = new StandardGameEngine(new ConsoleRender(new InfoPanel(),new PlayFieldPanel(),new TopScoresPanel()),new ConsoleInputProvider(new CommandReader(),new Menu()),mockPlayField.Object,new SimpleCommandFactory(), ConsoleLogger.Instance(), new Player("Test",new Cell(new Position(3,3))),new MementoCaretaker(new List<IMemento>()),ScoreLadder.Instance);

               gameEngine.Initialize(RandomNumberGenerator.Instance);

            mockPlayField.Verify(x=>x.InitializePlayFieldCells(It.IsAny<IRandomNumberGenerator>()),Times.Once);
        }