Como orientar uma variavel em um vetor de forma regrada

Pessoal, bom dia!

Estou com um problema, não estou conseguindo implementar um metodo que não deixe a peça passar de 2 casas.
Projeto é de dama…

Segue as regras:

Implemente um método para movimentar as peças:

mover(origemX, origemY, destinoX, destinoY)

O método deve verificar se o movimento é permitido ou não. Por exemplo;

  1. A posição de origem deve ter uma peça, isto é, o valor do array na posição (origemX, origemY) deve ser igual a 1 .
  2. A posição de destino não deve conter uma peça e deve ser uma posição válida, isto é, o valor do array na posição (destinoX, destinoY) deve ser igual a 0 .
  3. A diferença de posições entre origem e destino deve ser de duas casas na vertical ou na horizontal.
  4. Deve haver uma peça entre a origem e o destino.

E assim por diante. Os tópicos acima são apenas um resumo simples para fazer o movimento.

Depois de verificar se o movimento é possível, o método deve então aplicar as alterações no vetor para realizar o movimento:

  • A posição de origem do array recebe 0 .
  • A posição de destino do array recebe 1 .
  • A peça que foi “pulada” do array recebe 0 .

Estou apanhando no 3… Poderiam me dar uma dica? N]ao precisa ser a resposta, só um caminho…

:slight_smile:

Há dois 3. no teu enunciado…

primeiro 3

Então tens de verificar que um destes quatro casos é verdade

 origemX == destinoX && origemY == destinoY + 2 // mover duas casas no sentido positivo do y

 origemX == destinoX && origemY == destinoY - 2 // mover duas casas no sentido negativo do y

 origemX == destinoX + 2 && origemY == destinoY // mover duas casas no sentido positivo do x

 origemX == destinoX - 2 && origemY == destinoY // mover duas casas no sentido negativo do x
1 curtida

Pelo que entendi, seria apenas algo como:

int diffX = Math.abs(origemX - destinoX);
int diffY = Math.abs(origemY - destinoY);
if ((diffX == 2 && diffY == 0) || (diffX == 0 && diffY == 2)) {
    // movimento permitido
}

Ou seja, verifica se a diferença entre as posições de origem e destino é de 2 casas na vertical ou na horizontal. Se a diferença for na horizontal, não pode ser na vertical e vice-versa.

É isso?

Se bem que a descrição não bate exatamente com um jogo de damas, no qual as peças só podem andar na diagonal. Mas enfim…

1 curtida

O exemplo seu ajuda bastante.

Realmente não bate com o jogo de damas… Mas pra dama, tem muito pouco artigo, então estou usando o que encontro pra xadrez também

Resolvi de uma forma parecida, porem bem simples kkkk.

agora estou pensando em como manter o jogo constante. E como remover a peça do oponente ao colocar as coordenadas.

:smile: