Example #1
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] possibilidades = new bool[Mesa.Linhas, Mesa.Colunas];

            Posicao posicao = new Posicao(0, 0);

            //acima
            posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            //abaixo
            posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            //esquerda
            posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna - 1);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            //direita
            posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna + 1);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            //Noroeste
            posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna - 1);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            //Nordeste
            posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna + 1);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            //Sudoeste
            posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna - 1);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            //Sudeste
            posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna + 1);
            if (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;
            }

            return(possibilidades);
        }
Example #2
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] possibilidades = new bool[Mesa.Linhas, Mesa.Colunas];

            Posicao posicao = new Posicao(0, 0);

            //acima
            posicao.DefinirPosicaoFutura(Posicao.Linha - 1, Posicao.Coluna);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Linha--;
            }

            //abaixo
            posicao.DefinirPosicaoFutura(Posicao.Linha + 1, Posicao.Coluna);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Linha++;
            }

            //direita
            posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna + 1);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Coluna++;
            }

            //esquerda
            posicao.DefinirPosicaoFutura(Posicao.Linha, Posicao.Coluna - 1);

            while (Mesa.PosicaoValida(posicao) && PodeMover(posicao))
            {
                possibilidades[posicao.Linha, posicao.Coluna] = true;

                if (Mesa.PosicaoPeca(posicao) != null && Mesa.PosicaoPeca(posicao).Cor != Cor)
                {
                    break;
                }

                posicao.Coluna--;
            }

            return(possibilidades);
        }