/// <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); }