コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
 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);
 }