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á