public void Execute(int wight, int height, int minWordsForGrid)
    {
        List<Word> wordsForGame = words.GetAll();
        Grid<char> grid = new Grid<char>((uint)wight, (uint)height);
        GridWithLetters gridWithLetters;

        wordsForGame = shuffleWordsService.Shuffle(wordsForGame);

        if (minWordsForGrid < wordsForGame.Count)
        {
            int toremover = wordsForGame.Count - minWordsForGrid;
            wordsForGame.RemoveRange(minWordsForGrid, toremover);
        }

        gridWithLetters = addWordsService.AddWords(grid, wordsForGame);
        gridWithLetters = fillGridService.FillGrid(gridWithLetters);

        gameService.SetNewGame(gridWithLetters);

        if (haveGameActive)
            OnGameReset?.Invoke();
        
        Logger.Log("-- New Game --");
        haveGameActive = true;
    }
        public void Add_Word_Successfully_In_Zero_Position()
        {
            // Given
            var grid = new Grid <char>(10, 10);

            wordsRepository.Add(new Word("Uno"));
            ramdomPositionGenerator.SetMaxPosition(new Position(10, 10));
            ramdomPositionGenerator.SetReturnPosition(new Position(0, 0));

            // When
            var result = addWordsService.AddWords(grid, wordsRepository.GetAll());

            // Then
            PrintGrid.Print(result);
            Assert.IsTrue(result.GetLeterInPosition(0, 0) == 'U');
            Assert.IsTrue(result.GetLeterInPosition(1, 0) == 'n');
            Assert.IsTrue(result.GetLeterInPosition(2, 0) == 'o');
        }