Implementação de Regras ao Movimentar Peças

Bom dia pessoal!

Estou com dificuldade em encontrar informações sobre como regrar a movimentação das peças.
Estou criando um jogo de damas, bem primitivo…

vou expor o codigo pra facilitar:

identar texto pré-formatado por 4 espaços

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;
// private static final String ALFABETO = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

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            a   b   c   d   e   f   g   H ");
	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();
	}
	System.out.println("\n            a   b   c   d   e   f   g   H  ");

}

public void colocarPecaNoTabuleiro() {

	// Preenchendo fileira 1 e 2
	for (int i = 1; i < Tabuleiro.tamanho; i++) {
		matriz[1][i] = (char) ('J');

		for (int j = 1; j < Tabuleiro.tamanho; j++) {
			matriz[2][j] = (char) ('J');
		}

		for (int h = 1; h < Tabuleiro.tamanho; h++) {
			matriz[7][h] = (char) ('J');
		}
		for (int b = 1; b < Tabuleiro.tamanho; b++) {
			matriz[8][b] = (char) ('J');
		}

	}

}

public void movimentarPeca(int posicaoAnteriorL, int posicaoAnteriorC, int posicaoPosteriorL, int posicaoPosteriorC) {
	char aux  = matriz[posicaoAnteriorL][posicaoAnteriorC];
	matriz[posicaoAnteriorL][posicaoAnteriorC] = matriz[posicaoPosteriorL][posicaoPosteriorC];
	matriz[posicaoPosteriorL][posicaoPosteriorC] = aux;
	}

	/*
	 * public void colocarPecaNoTabuleiro(int pecas, int Jog1F1, int Jog1F2, int
	 * Jog2F1 , int Jog2F2) {
	 * 
	 * 
	 * this.tamanho = pecas;
	 * 
	 * 
	 * 
	 * for (int i = 0; i < pecas; i++) { matriz[Jog1F1][i] = (char) ('J');
	 * matriz[Jog1F2][i] = (char) ('J');
	 * 
	 * for (int j = 0; j < pecas; j++) { matriz[Jog2F1][i] = (char) ('J');
	 * matriz[Jog2F2][i] = (char) ('J');
	 */
}


identar texto pré-formatado por 4 espaços

package programa;

import java.util.Scanner;

import tabuleiro.Tabuleiro;

public class Program {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Tabuleiro tabuleiro = new Tabuleiro();

	tabuleiro.colocarPecaNoTabuleiro();
	tabuleiro.imprimirTabuleiro();

	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();

	sc.close();

}

}

Poderiam me dar uma força? Estou perdido… :slight_smile:

Primeira vez que vejo alguém dizer que está perdido e sorrindo… :smile:

Vamos lá…

Quando alguém decide mover uma peça:

  1. você precisa testar se aquela peça é sua;
  2. se sim, testar se a peça é dama ou não. Se não for dama, verificar a casa para onde você pediu para mover:
    2.1 se a casa estiver livre, mover
    2.2 se for limite do tabuleiro, avisar que está na borda e não pode mover
    2.3 se for uma peça adversária:
  3. verificar se há espaço após ela para poder pular e comer
    3.1 se houver espaço, mover a peça
    3.2 após mover, verificar se tem outra peça que pode pular (tem peça adjacente e espaço disponível depois dela), se sim, fazer automaticamente a captura da próxima peça
    3.3 repetir o teste acima até não haver mais peças para capturar
  4. Se a casa que você moveu a peça for a linha de topo do tabuleiro, transformar a peça singular em peça dupla (dama)
    4.1 em adição ao item 2, se for dama, os testes de casas passam a ser todo limite diagonal do tabuleiro
  5. Se um dos jogadores tiver menos de X peças, o outro jogador tem Y jogadas para vencer, senão perde. (Eu não lembro as regras de damas, quais os valores de X e Y, você vai precisar verificar)

Isso já te ajuda a começar. Bom jogo!

3 curtidas

Obrigado pelas dicas amigo!

essas orientações eu posso colocar direto no metodo de mover as peças, ou devo criar um metodo a parte?