/// <summary>
        /// Metodo responsavel por Executar um movimento dados os comandos do jogador
        /// </summary>
        /// <param name="origem">Cordenadas de origem da peca selecionada pelo jogador</param>
        /// <param name="destino">Cordenadas de destino escolhido pelo jogador</param>
        /// <returns>Retorna a peca capturada para adicionar na lista de pecas capturadas</returns>
        public Peca executaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = tab.retirarPeca(origem);

            p.incrementarQteMovimentos();
            Peca pecaCapturada = tab.retirarPeca(destino);

            tab.colocarPeca(p, destino);
            if (pecaCapturada != null)
            {
                capturadas.Add(pecaCapturada);
            }

            // #jogadaEspecial Roque Pequeno
            if (p is Rei && destino.coluna == origem.coluna + 2)
            {
                Posicao origemT  = new Posicao(origem.linha, origem.coluna + 3);
                Posicao destinoT = new Posicao(origem.linha, origem.coluna + 1);
                Peca    T        = tab.retirarPeca(origemT);
                T.incrementarQteMovimentos();
                tab.colocarPeca(T, destinoT);
            }

            // #jogadaEspecial EnPassant
            if (p is Peao && origem.coluna != destino.coluna && pecaCapturada == null)
            {
                Posicao posP;
                if (p.cor == Cor.Branca)
                {
                    posP = new Posicao(destino.linha + 1, destino.coluna);
                }

                else
                {
                    posP = new Posicao(destino.linha - 1, destino.coluna);
                }
                pecaCapturada = tab.retirarPeca(posP);
                capturadas.Add(pecaCapturada);
            }



            LogWriter.Info($"{jogadorAtual} fez uma jogada Peça:{p.Nome()} {origem} -> {destino}");
            return(pecaCapturada);
        }