Пример #1
0
        public override bool[,] movimentosPossiveis()
        {
            bool[,] matriz = new bool[_tabuleiro.linhas, _tabuleiro.colunas];

            Posicao pos = new Posicao(0, 0);

            // acima
            pos.setarValores(_posicao._linha - 1, _posicao._coluna);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // acima direita
            pos.setarValores(_posicao._linha - 1, _posicao._coluna + 1);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // direita
            pos.setarValores(_posicao._linha, _posicao._coluna + 1);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // direita baixo
            pos.setarValores(_posicao._linha + 1, _posicao._coluna + 1);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // baixo
            pos.setarValores(_posicao._linha + 1, _posicao._coluna);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // baixo esquerda
            pos.setarValores(_posicao._linha + 1, _posicao._coluna - 1);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // esquerda
            pos.setarValores(_posicao._linha, _posicao._coluna - 1);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // esquerda acima
            pos.setarValores(_posicao._linha + 1, _posicao._coluna - 1);

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            return(matriz);
        }
Пример #2
0
        public override bool[,] movimentosPossiveis()
        {
            Posicao pos = new Posicao(0, 0);

            bool[,] matriz = new bool[_tabuleiro.linhas, _tabuleiro.colunas];


            // acima direita
            pos.setarValores(_posicao._linha - 1, _posicao._coluna + 1);
            while (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
                if (_tabuleiro.peca(pos) != null && _tabuleiro.peca(pos)._cor != _cor)
                {
                    break;
                }
                pos._linha  = pos._linha - 1;
                pos._coluna = pos._coluna + 1;
            }

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }


            // direita baixo
            pos.setarValores(_posicao._linha + 1, _posicao._coluna + 1);
            while (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
                if (_tabuleiro.peca(pos) != null && _tabuleiro.peca(pos)._cor != _cor)
                {
                    break;
                }
                pos._linha  = pos._linha + 1;
                pos._coluna = pos._coluna + 1;
            }

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // esquerda acima
            pos.setarValores(_posicao._linha - 1, _posicao._coluna - 1);
            while (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
                if (_tabuleiro.peca(pos) != null && _tabuleiro.peca(pos)._cor != _cor)
                {
                    break;
                }
                pos._linha  = pos._linha - 1;
                pos._coluna = pos._coluna - 1;
            }

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            //esqueda baixo
            pos.setarValores(_posicao._linha + 1, _posicao._coluna - 1);
            while (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
                if (_tabuleiro.peca(pos) != null && _tabuleiro.peca(pos)._cor != _cor)
                {
                    break;
                }
                pos._linha  = pos._linha + 1;
                pos._coluna = pos._coluna - 1;
            }

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }
            return(matriz);
        }
Пример #3
0
        public override bool[,] movimentosPossiveis()
        {
            //posição teste. implementar entrada depois
            Posicao pos        = new Posicao(0, 0);
            Posicao posInicial = new Posicao(0, 0);

            // recebe todas as linhas e colunas do tabuleiro em verdadeiro ou falso
            bool[,] matriz = new bool[_tabuleiro.linhas, _tabuleiro.colunas];

            // instacia uma peca auxiliar que recebe a peça do tabuleiro
            Peca pecaNoTabuleiro = _tabuleiro.peca(_posicao);


            //primeiro movimento
            if (pecaNoTabuleiro._cor == Cor.Branca && pecaNoTabuleiro._qtdMovimentos == 0)
            {
                posInicial.setarValores(_posicao._linha + 2, _posicao._coluna);
                pos.setarValores(_posicao._linha + 1, _posicao._coluna);
            }
            else if (pecaNoTabuleiro._cor == Cor.Preta && _qtdMovimentos == 0)
            {
                posInicial.setarValores(_posicao._linha - 2, _posicao._coluna);
                pos.setarValores(_posicao._linha - 1, _posicao._coluna);
            }
            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
                matriz[posInicial._linha, posInicial._coluna] = true;
            }
            // verificar acima
            if (pecaNoTabuleiro._cor == Cor.Branca)
            {
                pos.setarValores(_posicao._linha + 1, _posicao._coluna);
            }
            else if (pecaNoTabuleiro._cor == Cor.Preta)
            {
                pos.setarValores(_posicao._linha - 1, _posicao._coluna);
            }

            if (_tabuleiro.posicaoPermitida(pos) && podeMovimentar(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // verificar acima direita
            if (pecaNoTabuleiro._cor == Cor.Branca)
            {
                pos.setarValores(_posicao._linha + 1, _posicao._coluna + 1);
            }
            else if (pecaNoTabuleiro._cor == Cor.Preta)
            {
                pos.setarValores(_posicao._linha - 1, _posicao._coluna - 1);
            }

            if (_tabuleiro.posicaoPermitida(pos) && adversario(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            // verificar acima esquerda
            if (pecaNoTabuleiro._cor == Cor.Branca)
            {
                pos.setarValores(_posicao._linha + 1, _posicao._coluna - 1);
            }
            else if (pecaNoTabuleiro._cor == Cor.Preta)
            {
                pos.setarValores(_posicao._linha - 1, _posicao._coluna + 1);
            }

            if (_tabuleiro.posicaoPermitida(pos) && adversario(pos))
            {
                matriz[pos._linha, pos._coluna] = true;
            }

            return(matriz);
        }