Jump to content

Exercício Labirinto


johnfcporto
 Share

Recommended Posts

O exercício é o seguinte:

Escreva uma aplicação para desenhar um labirinto no ecrã a partir da informação guardada num ficheiro de texto, como é ilustrado na coluna esquerda da tabela seguinte. O labirinto tem de ser constituído pelas letras maiúsculas T ou X, * (asterisco) e espaços.

Exemplo 1:

http://imageshack.us/photo/my-images/194/desenholabirinto.png

A informação sobre o labirinto está no ficheiro de texto designado LAB.IN, cujo formato é

ilustrado na coluna direita da tabela anterior. Cada linha desse ficheiro corresponde a uma linha

do labirinto. Os algarismos indicam o número de repetições do carácter seguinte. A letra b

(minúscula) representa os espaços brancos no labirinto. O ficheiro de saída contendo o labirinto

desenhado, será designado por LAB.OUT.

Não tou a conseguir fazer, se me puderem ajudar.

Nota: Os ficheiros de texto aqui tem formato .txt ou .in.... nao tou a perceber

Link to comment
Share on other sites

Não sei / Não cheguei ao nível de fazer esse tipo de exercícios, mas começando por um pouco de pseudocódigo, tens de:

- Fazer com que o programa leia o texto e identifique o tipo de caracter;

- Fazer com que o programa faça uma ação ao identificar o caracter, por exemplo:

                - Ao ler "T", fazer print de um quadrado;

                - Ao ler "S", fazer print de um espaço;

E por aí fora.

Isto porque, saber a composicão do granito, os estágios da evolucão psicológica humana ou as deambulacões do Sartre não indicam puto sobre as competências de alguém num determinado campo específico e muito menos sobre o que as pessoas gostam de fazer ou a sua capacidade de aprendizagem. - bubulindo, 15 de Fevereiro de 2013 - 02:01

Link to comment
Share on other sites

Não sei se é boa idéia guardar cada linha num array.

Mas, quem sou eu, para andar para aí a ensinar gente mais avançada que eu.

Isto porque, saber a composicão do granito, os estágios da evolucão psicológica humana ou as deambulacões do Sartre não indicam puto sobre as competências de alguém num determinado campo específico e muito menos sobre o que as pessoas gostam de fazer ou a sua capacidade de aprendizagem. - bubulindo, 15 de Fevereiro de 2013 - 02:01

Link to comment
Share on other sites

Se for mesmo só receber e imprimir o labirinto, só precisas de transformar o input numa só String em que representas as linhas como estarão no ficheiro (\n).

O que podes fazer é ler o ficheiro para uma String, analisar caracter a caracter e colocar o que é pretendido na String final. Em principio, com uma cadeia de ifs ou um switch case, resolves o problema. Só tens a questão de se o valor que indica o número de repetições poder ou não ser maior que 9.

Podes mesmo simplificar substituindo na String de input as ocorrências de 'b' por ' ':

String input = input.replaceAll("b", " ");

switch (one_char) {
    case ' ':
    case 'T':
        // escrever para a string final (função com ciclo for para número de repetições)
        repetitions = 0;
        break;
    case '\n':
        // escrever para a string final (uma única vez)
        // reset às repetitions também pode ser uma boa ideia
        break;
    default:
        if (one_char >= '0' && one_char <= '9') { // ver tabela ascii
            repetitions *= 10; // reter o valor já existente na variável
            repetitions += (int) (one_char - '0');
        }
        else { // error }
}

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

via código como? nao percebo...

 try {
            FileWriter ficheiro = new FileWriter("LAB.IN");
            BufferedWriter output = new BufferedWriter(ficheiro);
            output.write("1T1b5T\n1T2b1T1b2T\n1T1b1T2b2T\n1T3b1T1b1T\n3T3b1T\n1T3b1T1b1T\n5T1*1T");
            output.close();
        } catch (Exception e) {
            System.err.println("Erro: " + e.getMessage());
        }
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.