public boolean verificaCaminhoTorre(Posicao posicaoInicial,
            Posicao posicaoFinal) {

        /* movimento horizontal */
        if (posicaoInicial.getLinha() == posicaoFinal.getLinha()) {
            int colunaVariante;
            int colunaInicial = posicaoInicial.getColuna();
            /* verifica a posicao de movimentacao */
            if (posicaoFinal.getColuna() > posicaoInicial.getColuna()) /* direita */ {
                colunaVariante = 1;
            } else /* esquerda */ {
                colunaVariante = -1;
            }
            for (int i = 0; i < Math.abs(posicaoFinal.getColuna()
                    - posicaoInicial.getColuna()) - 1; i++) {
                colunaInicial += colunaVariante;
                if (this.getCasas(colunaInicial, posicaoInicial.getLinha()) != null) {
                    return false;
                }
            }
            /* movimento vertical */
        } else {
            int linhaVariante;
            int linhaInicial = posicaoInicial.getLinha();
            /* verifica a posicao de movimentacao */
            if (posicaoFinal.getLinha() > posicaoInicial.getLinha()) /* cima */ {
                linhaVariante = 1;
            } else /* baixo */ {
                linhaVariante = -1;
            }
            for (int i = 0; i < Math.abs(posicaoFinal.getLinha()
                    - posicaoInicial.getLinha()) - 1; i++) {
                linhaInicial += linhaVariante;
                if (this.getCasas(posicaoInicial.getColuna(), linhaInicial) != null) {
                    return false;
                }
            }
        }
        return true;
    }