Exemplo n.º 1
0
        public override bool[,] movimentosPosiveis()
        {
            bool[,] mat = new bool[tab.linhas, tab.colunas];
            posicao Pos = new posicao(0, 0);

            // acima
            Pos.definirValores(posicao.linha - 1, posicao.coluna);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.linha - 1;
            }

            // baixo
            Pos.definirValores(posicao.linha + 1, posicao.coluna);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.linha + 1;
            }

            // direita
            Pos.definirValores(posicao.linha, posicao.coluna + 1);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.coluna + 1;
            }

            // esquerda
            Pos.definirValores(posicao.linha, posicao.coluna - 1);
            while (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
                if (tab.Peca(Pos) != null && tab.Peca(Pos).cor != cor)
                {
                    break;
                }
                Pos.linha = Pos.coluna - 1;
            }

            return(mat);
        }
Exemplo n.º 2
0
        public override bool[,] movimentosPosiveis()
        {
            bool[,] mat = new bool[tab.linhas, tab.colunas];
            posicao Pos = new posicao(0, 0);

            // acima
            Pos.definirValores(posicao.linha - 1, posicao.coluna);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // nordeste
            Pos.definirValores(posicao.linha - 1, posicao.coluna + 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // direita
            Pos.definirValores(posicao.linha, posicao.coluna + 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // sudeste
            Pos.definirValores(posicao.linha + 1, posicao.coluna + 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // baixo
            Pos.definirValores(posicao.linha + 1, posicao.coluna);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // sudoeste
            Pos.definirValores(posicao.linha + 1, posicao.coluna - 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // esquerda
            Pos.definirValores(posicao.linha, posicao.coluna - 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            // noroeste
            Pos.definirValores(posicao.linha - 1, posicao.coluna - 1);
            if (tab.posicaoValida(Pos) && podeMover(Pos))
            {
                mat[Pos.linha, Pos.coluna] = true;
            }

            return(mat);
        }