Implementação de Regra ao Mover uma Variavel em um Vetor

Boa noite pessoal!

Estou com um problema especifico ao implementar um metodo.
Nele, tento orientar que a variavel dentro do vetor “J1”, não pod’e mover-se para posições menores no vetor. Porém, está regra está surtindo efeito no “J2”, mesmo eu especificando no metodo.

Este é um projeto de dama que estou fazendo para treinar. vou expor o codigo, e o erro aqui:

Tabuleiro:

package tabuleiro;

import Enum.Cor;
import entidades.Peao;

public class Tabuleiro {

	private String[][] matriz;
	private int tamanho = 10;
	private Peao peao = new Peao();

	public Tabuleiro() {
		tamanho++;
		this.matriz = new String[tamanho][tamanho];
		this.matriz[0][0] = "  ";
		for (int i = 0; i < tamanho; i++) {
			for (int j = 0; j < tamanho; j++) {
				matriz[i][j] = "-";
			}
		}
	}

	public void imprimeTab() {
		// System.out.println("\n 1 2 3 4 5 6 7 8 9 10 ");
		System.out.print("\n          ");
		for (int i = 1; i < tamanho; i++) {
			System.out.printf("%4d", i);
		}
		System.out.println();

		for (int linha = tamanho - 1; linha > 0; linha--) {
			System.out.printf("\n%9d ", linha);
			/*
			 * if (linha < 10) { System.out.println(); System.out.print("        " + linha +
			 * " "); } else { System.out.println(); System.out.print("       " + linha +
			 * " ");
			 * 
			 * }
			 */
			for (int coluna = 1; coluna < tamanho; coluna++) {
				System.out.printf("%4s", matriz[linha][coluna]);
				// System.out.print(" " + matriz[linha][coluna]);

			}

			System.out.println();
		}

	}

	public void colocarPecaNoTabuleiro() {

		for (int i = 2; i < tamanho; i += 2) {
			matriz[1][i] = peao.jogador1(Cor.AZUL);

			for (int j = 1; j < tamanho; j += 2) {
				matriz[2][j] = peao.jogador1(Cor.AZUL);
			}

			for (int v = 2; v < tamanho; v += 2) {
				matriz[3][v] = peao.jogador1(Cor.AZUL);
			}

			for (int x = 1; x < tamanho; x += 2) {
				matriz[8][x] = peao.jogador2(Cor.BRANCO);
			}

			for (int h = 2; h < tamanho; h += 2) {
				matriz[9][h] = peao.jogador2(Cor.BRANCO);
			}
			for (int b = 1; b < tamanho; b += 2) {
				matriz[10][b] = peao.jogador2(Cor.BRANCO);
			}

		}

	}

	public String[][] getMatriz() {
		return matriz;
	}

	public void setMatriz(String[][] matriz) {
		this.matriz = matriz;
	}

	public int getTamanho() {
		return tamanho;
	}
}

**Movimento: **

package tabuleiro;

import Enum.Cor;
import entidades.Peao;

public class Movimento {
	
	private Tabuleiro tab = new Tabuleiro();
	private Peao p = new Peao();
	
	public Movimento(Tabuleiro tabuleiro) {
		this.tab = tabuleiro;
	}
	
	public boolean moverJog1(int posAL, int posAC, int posPL ,int posPC){
		String[][] aux = tab.getMatriz();

		if (aux[posPL][posPC] == p.jogador1(Cor.AZUL) && aux[posAL][posAC] == p.jogador1(Cor.AZUL)) {
		}
		if (posPL >= posAL + 1) { 
			
			tab.setMatriz(aux);
			return false;
		} else
			return true;
	}
	
	public void moverPecas(int posAL, int posAC, int posPL ,int posPC)  {
		
		String[][] aux = tab.getMatriz();
		
		if(moverJog1(posAL, posAC, posPL, posPC)) {
			throw new TabuleiroExcecao("Somente a dama pode mover-se para trás!");
		}
		String aux2 =  aux [posAL][posAC]; //recebe a variavel unica do vetor.
		aux [posAL][posAC] = aux [posPL][posPC];
		aux [posPL][posPC] = aux2; //recebe de volta a variavel retirada do vetor, porem em outro local.
		tab.setMatriz(aux);

	}
	
}

posAL = Posição anterior linha.
posAC = Posição anterior coluna.
posPL = Posição posterior linha.
posPC = Posição posterior coluna.

O meu problema está neste metodo:

public boolean moverJog1(int posAL, int posAC, int posPL ,int posPC){
		String[][] aux = tab.getMatriz();

		if (aux[posPL][posPC] == p.jogador1(Cor.AZUL) && aux[posAL][posAC] == p.jogador1(Cor.AZUL)) {
		}
		if (posPL >= posAL + 1) { 
			
			tab.setMatriz(aux);
			return false;
		} else
			return true;
	}

posAL = Posição anterior linha.
posAC = Posição anterior coluna.
posPL = Posição posterior linha.
posPC = Posição posterior coluna.

Mesmo descrito, ele dá este erro ao tentar mover a peça “J2”:

             1   2   3   4   5   6   7   8   9  10

       10   J2   -  J2   -  J2   -  J2   -  J2   -

        9    -  J2   -  J2   -  J2   -  J2   -  J2

        8   J2   -  J2   -  J2   -  J2   -  J2   -

        7    -   -   -   -   -   -   -   -   -   -

        6    -   -   -   -   -   -   -   -   -   -

        5    -   -   -   -   -   -   -   -   -   -

        4    -   -   -   -   -   -   -   -   -   -

        3    -  J1   -  J1   -  J1   -  J1   -  J1

        2   J1   -  J1   -  J1   -  J1   -  J1   -

        1    -  J1   -  J1   -  J1   -  J1   -  J1
8
1
7
2

Exception in thread "main" tabuleiro.TabuleiroExcecao: **Somente a dama pode mover-se para trás!**
	at tabuleiro.Movimento.moverPecas(Movimento.java:48)
	at programa.Programa.main(Programa.java:31)

Chamada do metodo:

if(moverJog1(posAL, posAC, posPL, posPC)) {
			throw new TabuleiroExcecao("Somente a dama pode mover-se para trás!");
		}

Alguem poderia me dar uma ajuda? Ou uma dica? Agradeço de já :smile: