Uma função recebe uma matriz 3x3 preenchida de 1 a 9 em posições aleatórias. Também recebe a posição de determinado número da matriz, a função tem que verificar se essa posição recebida é adjacente ao número 9, caso for fazer a troca de posição entre eles.
Como faço isso?
Legal, e quer ajuda com o quê exatamente?
Abraço.
Como fazer isso. kk
Desenha essa matriz no papel
Preenche com os valores aleatoriamente
Você consegue nos descrever como faz para verificar se um número é adjacente ao 9 nessa matriz que você desenhou?
6 7 4
9 1 2
5 8 3
supondo essa matriz, e a posição do valor 1, pra mudar o 1 de posição eu teria que verifica se o número acima dele é o 9, ou abaixo, ou do lado esquerdo/direito. Mas não sei como colocar isso no código.
fiz o seguindo código:
for (int linha = 0; linha < matriz.length; linha++) {
for (int coluna = 0; coluna < matriz.length; coluna++) {
if (matriz[linha][coluna] == 9) {
matriz[linha][coluna] = matrizJogo[posicaoX][posicaoY];
matriz[posicaoX][posicaoY] = 9;
}
}
}
mas está errado, pois ele mudar de posição independente se a posição X,Y for adjacente ao 9.
O seu número tem uma posição (x, y)
certo?
Onde x
é o índice da coluna e y
é o índice da linha
O número à esquerda está na posição (x - 1, y)
O número à direita está na posição (x + 1, y)
O número acima está na posição (x, y - 1)
O número abaixo está na posição (x, y + 1)
É só usar esses índices.
Lembrando que:
Na primeira coluna não haverá números à esquerda
Na última coluna não haverá números à direita
Na primeira linha não haverá números acima
Na última linha não haverá números abaixo
Essa lógica funciona pra qualquer matriz M x N
Funcionou agora. Valeu. <3