private void AplicarMovimentos(Peca peca, Point movimentacao) { Point posicaoDesejada = new Point(peca.PosicaoAtual.X + movimentacao.X, peca.PosicaoAtual.Y + movimentacao.Y); Point posicaoSalto = new Point(peca.PosicaoAtual.X + 2 * movimentacao.X, peca.PosicaoAtual.Y + 2 * movimentacao.Y); if (this.ValidarERefazerMovimento(peca, posicaoDesejada)) { if (this.ValidarPecaDentroTabuleiro(posicaoSalto) && !this.ValidarOutraPecaNoLocal(posicaoSalto)) { peca.AdicionarPosicao(posicaoSalto); } } }
public void AplicarRodadaBonus(Jogada jogada) { Peca pecaMovida = this.Pecas.First(p => p.PosicaoAtual == jogada.PosicaoEscolhida); this.CalcularMovimentos(pecaMovida); List <Point> posicoesPossiveis = pecaMovida.PosicoesPossiveis.FindAll(p => Math.Abs(p.X - jogada.PosicaoEscolhida.X) == 2 && Math.Abs(p.Y - jogada.PosicaoEscolhida.Y) == 2); if (posicoesPossiveis.Count == 0) { this.AtualizarCorAtual(); this.PercorrerTabuleiro(this.CorTurnoAtual); return; } this.Pecas.ForEach(p => p.PosicoesPossiveis.RemoveRange(0, p.PosicoesPossiveis.Count)); posicoesPossiveis.ForEach(p => pecaMovida.AdicionarPosicao(p)); }
private bool ValidarERefazerMovimento(Peca peca, Point posicaoDesejada) { if (this.ValidarPecaDentroTabuleiro(posicaoDesejada)) { if (this.ValidarOutraPecaNoLocal(posicaoDesejada)) { if (this.ValidarPecaInimiga(peca, posicaoDesejada)) { return(true); } } else { peca.AdicionarPosicao(posicaoDesejada); } } return(false); }