Sei sulla pagina 1di 3

/*

* To change this license header, choose License Headers in Project Properties.


* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package pecas;
import
import
import
import

java.util.List;
jogadas.Jogada;
tabuleiro.Posicao;
tabuleiro.Tabuleiro;

/**
*
* @author Ricardo
*/
public class Movimento {
Posicao[][] tab;
private int numeroMovimento;
private int fromX;
private int fromY;
private int toX;
private int toY;
private Peca peca;
// Posicao posicaoOrigem;
Posicao posicaoDestino;
public Movimento(int numeroMovimento, int fromX, int fromY, int toX, int toY
, Peca peca) {
this.numeroMovimento = numeroMovimento;
this.fromX = fromX;
this.fromY = fromY;
this.toX = toX;
this.toY = toY;
this.peca = peca;
}
//verifica se as coordenadas est?o dentro do tabuleiro
public boolean verificarLimites(int x, int y) {
if (x >= 0 && x <= 7 && y >= 0 && y <= 7) {
return true;
}
return false;
}
// public Jogada(Tabuleiro tabuleiro) {
public Posicao[][] copiaTabuleiro(Tabuleiro tabuleiro) {
tab = (Posicao[][]) tabuleiro.copiaTabuleiro();
return tab;
}
public void moverXCasasHorizontalOuVertical(List<Movimento> movimentos, Peca
peca, Posicao posicaoOriginal, Posicao posicaoDestino, boolean vez, int x) {
fromX = posicaoOriginal.getX();
fromY = posicaoOriginal.getY();

if (verificarLimites(fromX + x, fromY)) {
if (tab[fromX + x][fromY].isEmpty() || !(tab[fromX + x][fromY].getPe
ca().getJogador().isVez())) {
movimentos.add(new Movimento(numeroMovimento, fromX, fromY, from
X + x, fromY, peca));
numeroMovimento++;
}
}
if (verificarLimites(fromX - x, fromY)) {
if (tab[fromX - x][fromY].isEmpty() || !(tab[fromX - x][fromY].getPe
ca().getJogador().isVez())) {
movimentos.add(new Movimento(numeroMovimento, fromX, fromY, from
X - x, fromY, peca));
numeroMovimento++;
}
}
if (verificarLimites(fromX, fromY + x)) {
if (tab[fromX][fromY + x].isEmpty() || !(tab[fromX][fromY + x].getPe
ca().getJogador().isVez())) {
movimentos.add(new Movimento(numeroMovimento, fromX, fromY, from
X, fromY + x, peca));
numeroMovimento++;
}
}
if (verificarLimites(fromX, fromY - x)) {
if (tab[fromX][fromY - x].isEmpty() || !(tab[fromX][fromY - x].getPe
ca().getJogador().isVez())) {
movimentos.add(new Movimento(numeroMovimento, fromX, fromY, from
X, fromY - x, peca));
numeroMovimento++;
}
}
}
public int getNumeroMovimento() {
return numeroMovimento;
}
public int getFromX() {
return fromX;
}
public int getFromY() {
return fromY;
}
public int getToX() {
return toX;
}
public int getToY() {
return toY;
}
//imprime o move no formato final de impress?o com o num da jogada
public void printMovimentoNumero(Posicao[][] tabuleiro) {

System.out.print(numeroMovimento + ": ");


System.out.print(tabuleiro[fromX][fromY].getEtiqueta() + "-");
System.out.print(tabuleiro[toX][toY].getEtiqueta());
}
//igual ao anterior mas nao imprime o num da jogada
public void printMovimento(Posicao[][] tabuleiro) {
System.out.print(tabuleiro[fromX][fromY].getEtiqueta() + "-");
System.out.print(tabuleiro[toX][toY].getEtiqueta());
System.out.println();
}
}

Potrebbero piacerti anche