Duvida Lights Out 5x5 em java basico

Olá estou fazendo na faculdade uma materia que ensina o basico da programação em java, em uma das listas de exercicios pedindo para resolver um Lights Out 5x5, (Link para o exercico na pagina do professor da disciplina), fiz um codigo, aparentemente o funcionamento do programa esta normal nas etapas iniciais, porem estou com problemas para “terminar” o programa quando o objetivo foi cumprido…

Segue o codigo que fiz para tentar resolver o programa

[code]public class FinalPI {

static String[][] jogo = new String[7][7];
static String[][] respostajogo = new String[7][7];
static String[] coordenadas = new String[]{"#", "0", "1", "2", "3", "4", "#"};
static String x = "*";
static String y = ".";
static int Coordenadax;
static int Coordenaday;
static int i = 1;
static int j = 1;

public static void main(String[] args) {
    for (i = 0; i < 7; i++) {
        for (j = 0; j < 7; j++) {
            jogo[i][j] = x;
        }
    }
    for (i = 1; i < 7; i++) {
        for (j = 1; j < 7; j++) {
            respostajogo[i][j] = y;
        }
    }
    imprime_jogo();
    Scanner sc = new Scanner(System.in);
    do {
        do {
            System.out.print("Escolha uma coordenada ponto e insira o valor de X para essa coordenada:");
            Coordenadax = sc.nextInt() + 1;
            if (Coordenadax > 5 || Coordenadax < 0) {
                System.out.println("Digite um numero de 0 a 4");
            }
        } while (Coordenadax > 5 || Coordenadax < 0);
        do {
            System.out.print("Agora insira o valor de Y para essa coordenada:");
            Coordenaday = sc.nextInt() + 1;
            if (Coordenaday > 5 || Coordenaday < 0) {
                System.out.println("Digite um numero de 0 a 4");
            }
        } while (Coordenaday > 5 || Coordenaday < 0);
        System.out.print("A coordenada escolhida foi: " + (Coordenadax - 1) + ";" + (Coordenaday - 1));
        Duplo_espaco();
        if (jogo[Coordenadax][Coordenaday].equals(x)) {  
            jogo[Coordenadax][Coordenaday] = y;
        } else {
            jogo[Coordenadax][Coordenaday] = x;
        }
        if (jogo[Coordenadax - 1][Coordenaday].equals(x)) {
            jogo[Coordenadax - 1][Coordenaday] = y;
        } else {
            jogo[Coordenadax - 1][Coordenaday] = x;
        }
        if (jogo[Coordenadax + 1][Coordenaday].equals(x)) {
            jogo[Coordenadax + 1][Coordenaday] = y;
        } else {
            jogo[Coordenadax + 1][Coordenaday] = x;
        }
        if (jogo[Coordenadax][Coordenaday + 1].equals(x)) {
            jogo[Coordenadax][Coordenaday + 1] = y;
        } else {
            jogo[Coordenadax][Coordenaday + 1] = x;
        }
        if (jogo[Coordenadax][Coordenaday - 1].equals(x)) {
            jogo[Coordenadax][Coordenaday - 1] = y;
        } else {
            jogo[Coordenadax][Coordenaday - 1] = x;
        }
        imprime_jogo();
    } while (!respostajogo[i][j].equals(jogo[i][j])); \ este 
    {
        System.out.println("parabens voce terminou o jogo");
    }
}

public static void imprime_jogo() {
    for (int t = 0; t < 7; t++) {
        System.out.print(coordenadas[t] + " ");
    }
    System.out.println();
    for (i = 1; i < 6; i++) {
        System.out.print(coordenadas[i] + " ");
        for (j = 1; j < 6; j++) {
            System.out.print(jogo[j][i] + " ");
        }
        System.out.print(coordenadas[i]);
        System.out.println();
    }
    for (int t = 0; t < 7; t++) {
        System.out.print(coordenadas[t] + " ");
    }
    Duplo_espaco();
}

public static void Duplo_espaco() {
    System.out.println();
    System.out.println();
}

}[/code]

O erro no while final (oq tem um //este para facilitar) eu tento fazer uma comparação de duas matrizes que (acredito serem 6x6 uma vez que o valor inicial do j e do i é 1) so que como resultado eu obtenho a comparação dos pontos 1,1 de cada matriz o que e entendivel pois i e j valem 1.

Segue minha duvida como fazer essa comparaçao percorrer as matrizes em um espaço limitado de celulas … ou seja percorrer e comparar matrizes(7x7)[i][j] para intervamos de 0<i<6 e 0<i<6.

Obs.: Tentei fazer por boolean mais nao deu certo =/
Obs.2: Nao sei resolver o jogo >.< logo conferir e uma tarefa bem complicada =/ :?

Lepuroa

Pelo o que me lembro, não tem como comparar matrizes sem percorrer suas posições.

O teu while não está percorrendo cada posição, se foi isso que entendi.

[quote=felipebonezi]Pelo o que me lembro, não tem como comparar matrizes sem percorrer suas posições.

O teu while não está percorrendo cada posição, se foi isso que entendi.[/quote]

Sim voce esta correto >.<
So que nao estou conseguindo fazer ele percorrer as posicoes que desejo (que neste caso seria jogo[1][1]…ate…jogo[5][5] e o mesmo para respostajogo). quanto tento percorrer utilizando um duplo for a condicao do while passa ser invalida (eu posso estar fazendo algo errado).

Lepuroa

Edit

Modifiquei o while final fazendo parte do percurso da matriz manualmente oq faz ficar certo(o do…while funciona corretamete), o codigo ficou assim:
(mais imagina fazer isso se o tabuleiro for 80x80…)

} while (!respostajogo[i][j].equals(jogo[i][j]) && (!respostajogo[1][2].equals(jogo[1][2])) && (!respostajogo[1][3].equals(jogo[1][3])) && (!respostajogo[1][4].equals(jogo[1][4])) && (!respostajogo[1][5].equals(jogo[1][5])));//colocar todas as coordenadas ate [5][5] System.out.println("Parabens voce terminou o jogo");

Existe alguma meio transformar um duplo for (primeiro para percorrer a linha depois para percorrer a coluna) como um ato condicional do while (nao esquecendo que alem de percorrer simultaneamente deve-se comparar as posiçoes iguais >.< ) ?