private List<Posicao> posicoesPossiveisBispo(Posicao posicao) {

        List<Posicao> posicoesPossiveis = new ArrayList<>();
        int[] posicoesVariantes = new int[2];
        int colunaAtual, linhaAtual;

        /*
         * a combinacao das posicoes variantes fara o bispo se mover nas quatro
         * diagonais, a saber:11 -> diagonal direita superior *1-1 -> diagonal
         * direita inferior *-11 -> diagonal esquerda superior *-1-1 -> diagonal
         * esquerda inferior
         */
        posicoesVariantes[0] = 1;
        posicoesVariantes[1] = -1;

        /* os for determinam a direcao */
        for (int colunaVariante = 0; colunaVariante <= 1; colunaVariante++) {
            for (int linhaVariante = 0; linhaVariante <= 1; linhaVariante++) {
                /* reseta a posicao inicial para verificar outra diagonal */
                colunaAtual = posicao.getColuna();
                linhaAtual = posicao.getLinha();
                colunaAtual += posicoesVariantes[colunaVariante];
                linhaAtual += posicoesVariantes[linhaVariante];
                /* verifica se a posicao esta dentro do tabuleiro */
                while (colunaAtual >= 0 && colunaAtual <= 7 && linhaAtual >= 0
                        && linhaAtual <= 7) {
                    Peca peca = this.getCasas(colunaAtual, linhaAtual);
                    /* verifica se tem alguma coisa na posicao */
                    if (peca != null) {
                        /*
                         * se tiver e a cor for branca, pode capturar alem
                         * disso, nao eh necessario continuar verificando a
                         * diagonal apos encontrar o primeiro obstaculo
                         */
                        if (!peca.getCor().equals(this.getCasas(posicao).getCor())) {
                            posicoesPossiveis.add(new Posicao(colunaAtual,
                                    linhaAtual));
                        }
                        break;
                    } else {
                        /* pode se mover para a posicao */
                        posicoesPossiveis.add(new Posicao(colunaAtual,
                                linhaAtual));
                        colunaAtual += posicoesVariantes[colunaVariante];
                        linhaAtual += posicoesVariantes[linhaVariante];
                    }
                }
            }
        }

        return posicoesPossiveis;

    }