Bom dia pessoal!
Estou trabalhando em um projeto de dama e estou enroscado em como criar e movimentar a dama.
Alguem poderia me dar umas dicas?
package tabuleiro;
public class Tabuleiro {
public char[][] matriz;
public char[][] getMatriz() {
return matriz;
}
public void setMatriz(char[][] matriz) {
this.matriz = matriz;
}
private static final int tamanho = 10;
public Tabuleiro() {
this.matriz = new char[tamanho][tamanho];
for (int i = 0; i < tamanho; i++) {
for (int j = 0; j < tamanho; j++) {
this.matriz[i][j] = '-';
}
}
}
public int getTamanho() {
return tamanho;
}
public void imprimirTabuleiro() {
System.out.println("\n 1 2 3 4 5 6 7 8");
System.out.println("");
for (int linha = tamanho - 2; linha > 0; linha--) {
System.out.print(" " + linha + " ");
for (int coluna = 1; coluna < tamanho - 1; coluna++) {
System.out.print(" " + matriz[linha][coluna]);
}
System.out.println();
}
}
public void colocarPecaNoTabuleiro() {
// Preenchendo fileiras
for (int i = 1; i < Tabuleiro.tamanho; i++) {
matriz[1][i] = (char) ('O');
for (int j = 1; j < Tabuleiro.tamanho; j++) {
matriz[2][j] = (char) ('O');
}
for (int h = 1; h < Tabuleiro.tamanho; h++) {
matriz[7][h] = (char) ('O');
}
for (int b = 1; b < Tabuleiro.tamanho; b++) {
matriz[8][b] = (char) ('O');
}
}
}
public boolean moverPecaCorretamente(int posicaoAnteriorL, int posicaoAnteriorC, int posicaoPosteriorL,
int posicaoPosteriorC) {
if(posicaoPosteriorL >= posicaoAnteriorL + 2 && posicaoPosteriorC >= posicaoAnteriorC + 1) {
return true; //Regra para mover, nao serve pra dama.
}
else return false;
}
public boolean verificarExistenciaPeca(int posicaoL, int posicaoC) {
if (matriz[posicaoL][posicaoC] == '-') { //Verifica se existe peça na posição origem.
return false;
} else
return true;
}
public boolean validarPosicaoTabuleiro(int posicaoL, int posicaoC) {
if (posicaoL >= 0 && posicaoL < 8 && posicaoC >= 0 && posicaoC < 8) {
return true; //Verifica se a posição não é maior que o tabuleiro.
} else {
return false;
}
}
public void movimentarPeca(int posicaoAnteriorL, int posicaoAnteriorC, int posicaoPosteriorL,
int posicaoPosteriorC) {
if (!validarPosicaoTabuleiro(posicaoAnteriorL, posicaoAnteriorC)) {
throw new TabuleiroException("Posição fora das margens do tabuleiro");
}
if (!validarPosicaoTabuleiro(posicaoPosteriorL, posicaoPosteriorC)) {
throw new TabuleiroException("Posição fora das margens do tabuleiro");
}
if (!verificarExistenciaPeca(posicaoAnteriorL, posicaoAnteriorC)) {
throw new TabuleiroException("Não existe peça na posição de origem!");
}
if (verificarExistenciaPeca(posicaoPosteriorL, posicaoPosteriorC)) {
throw new TabuleiroException("Peça na posição destino!");
}
if (moverPecaCorretamente(posicaoAnteriorL, posicaoAnteriorC, posicaoPosteriorL, posicaoPosteriorC)) {
throw new TabuleiroException("Movimentação invalida! Você só pode mover 1 casa no tabuleiro.");
}
char aux = matriz[posicaoAnteriorL][posicaoAnteriorC];
matriz[posicaoAnteriorL][posicaoAnteriorC] = matriz[posicaoPosteriorL][posicaoPosteriorC];
matriz[posicaoPosteriorL][posicaoPosteriorC] = aux; //move as peças
}
}
package programa;
import java.util.Scanner;
import tabuleiro.Tabuleiro;
public class Program {
public static void main(String[] args) {
jogar();
}
public static void jogar() {
Scanner sc = new Scanner(System.in);
Tabuleiro tabuleiro = new Tabuleiro();
tabuleiro.colocarPecaNoTabuleiro();
tabuleiro.imprimirTabuleiro();
do {
int vL = sc.nextInt();
sc.nextLine();
int vC = sc.nextInt();
sc.nextLine();
int pvL = sc.nextInt();
sc.nextLine();
int pvC = sc.nextInt();
tabuleiro.movimentarPeca(vL, vC, pvL, pvC);
tabuleiro.imprimirTabuleiro();
} while (true);
}
}
O codigo ainda é bem primitivo… Estou aprendendo ainda