Exemplo n.º 1
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] mat = new bool[tabuleiro.linhas, tabuleiro.colunas];

            Posicao pos = new Posicao(0, 0);

            if (cor == Cor.Branca)
            {
                pos.DefinirPosicao(posicao.linha - 1, posicao.coluna);
                if (tabuleiro.ValidaPosicao(pos) && livre(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.DefinirPosicao(posicao.linha - 2, posicao.coluna);
                Posicao p2 = new Posicao(posicao.linha - 1, posicao.coluna);
                if (tabuleiro.ValidaPosicao(p2) && livre(p2) && tabuleiro.ValidaPosicao(pos) && livre(pos) && qtdMovimento == 0)
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.DefinirPosicao(posicao.linha - 1, posicao.coluna - 1);
                if (tabuleiro.ValidaPosicao(pos) && existeInimigo(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.DefinirPosicao(posicao.linha - 1, posicao.coluna + 1);
                if (tabuleiro.ValidaPosicao(pos) && existeInimigo(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
            }
            else
            {
                pos.DefinirPosicao(posicao.linha + 1, posicao.coluna);
                if (tabuleiro.ValidaPosicao(pos) && livre(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.DefinirPosicao(posicao.linha + 2, posicao.coluna);
                Posicao p2 = new Posicao(posicao.linha + 1, posicao.coluna);
                if (tabuleiro.ValidaPosicao(p2) && livre(p2) && tabuleiro.ValidaPosicao(pos) && livre(pos) && qtdMovimento == 0)
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.DefinirPosicao(posicao.linha + 1, posicao.coluna - 1);
                if (tabuleiro.ValidaPosicao(pos) && existeInimigo(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
                pos.DefinirPosicao(posicao.linha + 1, posicao.coluna + 1);
                if (tabuleiro.ValidaPosicao(pos) && existeInimigo(pos))
                {
                    mat[pos.linha, pos.coluna] = true;
                }
            }

            return(mat);
        }
Exemplo n.º 2
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] posicoes = new bool[tabuleiro.linhas, tabuleiro.colunas];
            Posicao pos = new Posicao(0, 0);

            //acima
            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }
            //nordeste
            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna + 1);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }
            //direita
            pos.DefinirPosicao(posicao.linha, posicao.coluna + 1);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }
            //sudeste
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna + 1);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }
            //abaixo
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }
            //sudoeste
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna - 1);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }
            //esquerda
            pos.DefinirPosicao(posicao.linha, posicao.coluna - 1);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }
            //noroeste
            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna - 1);
            if (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
            }

            return(posicoes);
        }
Exemplo n.º 3
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] mat = new bool[tabuleiro.linhas, tabuleiro.colunas];

            Posicao pos = new Posicao(0, 0);

            // NO
            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna - 1);
            while (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null && tabuleiro.GetPeca(pos).cor != cor)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha - 1, pos.coluna - 1);
            }

            // NE
            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna + 1);
            while (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null && tabuleiro.GetPeca(pos).cor != cor)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha - 1, pos.coluna + 1);
            }

            // SE
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna + 1);
            while (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null && tabuleiro.GetPeca(pos).cor != cor)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha + 1, pos.coluna + 1);
            }

            // SO
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna - 1);
            while (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null && tabuleiro.GetPeca(pos).cor != cor)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha + 1, pos.coluna - 1);
            }

            return(mat);
        }
Exemplo n.º 4
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] posicoes = new bool[tabuleiro.linhas, tabuleiro.colunas];
            Posicao pos = new Posicao(0, 0);

            //Acima
            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna);
            while (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha - 1, pos.coluna);
            }

            //Direita
            pos.DefinirPosicao(posicao.linha, posicao.coluna + 1);
            while (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha, pos.coluna + 1);
            }

            //Abaixo
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna);
            while (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha + 1, pos.coluna);
            }

            //Esquerda
            pos.DefinirPosicao(posicao.linha, posicao.coluna - 1);
            while (tabuleiro.ValidaPosicao(pos) && PodeMover(pos))
            {
                posicoes[pos.linha, pos.coluna] = true;
                if (tabuleiro.GetPeca(pos) != null)
                {
                    break;
                }
                pos.DefinirPosicao(pos.linha, pos.coluna - 1);
            }

            return(posicoes);
        }
Exemplo n.º 5
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] mat = new bool[tabuleiro.linhas, tabuleiro.colunas];

            Posicao pos = new Posicao(0, 0);

            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna - 2);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.DefinirPosicao(posicao.linha - 2, posicao.coluna - 1);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.DefinirPosicao(posicao.linha - 2, posicao.coluna + 1);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.DefinirPosicao(posicao.linha - 1, posicao.coluna + 2);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna + 2);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.DefinirPosicao(posicao.linha + 2, posicao.coluna + 1);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.DefinirPosicao(posicao.linha + 2, posicao.coluna - 1);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }
            pos.DefinirPosicao(posicao.linha + 1, posicao.coluna - 2);
            if (tabuleiro.ValidaPosicao(pos) && podeMover(pos))
            {
                mat[pos.linha, pos.coluna] = true;
            }

            return(mat);
        }