예제 #1
0
        public List<PecaDama> PecasComPossibilidadeAtaque(List<PecaDama> pecas)
        {
            var lista = new List<PecaDama>();


            RegraDama regraDama = new RegraDama(_pecasTabuleiro, _listaLugaresValidos);
            RegraPeao regraPeao = new RegraPeao(_pecasTabuleiro, _listaLugaresValidos);

            foreach (var pecaDama in pecas)
            {

                List<PecaDama> listaCandidatas = new List<PecaDama>();

                if (pecaDama.Tipo == TipoPeca.Dama)
                {
                    listaCandidatas = regraDama.PecasCandidatasEliminacao(pecaDama);
                }
                else if (pecaDama.Tipo == TipoPeca.Peao)
                {
                    listaCandidatas = regraPeao.PecasCandidatasEliminacao(pecaDama);
                }

                if (listaCandidatas.Count > 0)
                {
                    lista.Add(pecaDama);
                }
            }
            return lista;

        }
예제 #2
0
        public List<PecaDama> PecasComPossibilidadeDeMovimento()
        {
            var lista = new List<PecaDama>();
            RegraDama regraDama = new RegraDama(_pecasTabuleiro, _listaLugaresValidos);
            RegraPeao regraPeao = new RegraPeao(_pecasTabuleiro, _listaLugaresValidos);


            lista.AddRange(regraPeao.PecasComPossibilidadeMovimento(_jogadorIA));
            lista.AddRange(regraDama.PecasComPossibilidadeMovimento(_jogadorIA));


            return lista;
        }
예제 #3
0
        public void retorna_pecas_vizinhas_inimigas_a_partir_da_peca ()
        {
            
            this.CriarTabuleiroFake();

            PecaDama pecaTeste = new PecaDama { Pos = new Point(6, 6), Tipo = TipoPeca.Peao, Jogador = Jogador.Agil };

            RegraPeao regraPeao = new RegraPeao(_pecasTabuleiro, _listaLugaresValidos);

            List<PecaDama> pecasInimigas = regraPeao.RetornaPecasVizinhasInimigas(pecaTeste);

            List<PecaDama> pecasInimigasCandidatas = regraPeao.RetornaPecasComPossibilidadeEliminacao(pecaTeste, pecasInimigas);

            regraPeao.ExibirMovimentoAtaque(pecaTeste, pecasInimigasCandidatas);

        }
예제 #4
0
        private void CriarPossibilidadeMovimento(PecaDama peca, Grid grid)
        {
            RegraPeao regraPeao = new RegraPeao(_pecasTabuleiro, _listaLugaresValidos);
            RegraDama regraDama = new RegraDama(_pecasTabuleiro, _listaLugaresValidos);

            switch (peca.Tipo)
            {
                case TipoPeca.Peao:
                    regraPeao.ExibirPossibilidadeMovimento(peca);
                    break;
                case TipoPeca.Dama:
                    regraDama.ExibirPossibilidadeMovimento(peca);
                    break;
            }
        }
예제 #5
0
 private bool PecaAtacanteEJogoEmAtaque(PecaDama peca)
 {
     List<PecaDama> pecasEmAtaque = new RegraPeao(_pecasTabuleiro, _listaLugaresValidos).PecasEmAtaque(peca.Jogador);
     if (pecasEmAtaque.Count > 0 && !pecasEmAtaque.Exists(x => x == peca))
     {
         return false;
     }
     return true;
 }
예제 #6
0
        private List<PecaDama> ObterPecasCandidatasEliminacao(PecaDama peca)
        {
            List<PecaDama> pecas = new List<PecaDama>();
            RegraPeao regraPeao = new RegraPeao(_pecasTabuleiro, _listaLugaresValidos);
            RegraDama regraDama = new RegraDama(_pecasTabuleiro, _listaLugaresValidos);

            switch (peca.Tipo)
            {
                case TipoPeca.Peao:
                    pecas = regraPeao.PecasCandidatasEliminacao(peca);
                    break;
                case TipoPeca.Dama:
                    pecas = regraDama.PecasCandidatasEliminacao(peca);
                    break;
            }
            return pecas;
        }