o arquivo de descrição do mundo estrutura mundocbraga/prog1/2009.2/mundo-karel.pdf · um alarme...

1
12/2/09 1 Programação I Trabalho – O mundo do robô Karel Christiano Braga [email protected] 1 O mundo do robô Karel Karel vive num mundo que possui paredes e alarmes. Ele carrega uma bolsa de alarmes e é capaz de responder a alguns comandos básicos como mover-se, virar para a esquerda, pegar um alarme do mundo ou soltar um alarme no mundo. 2 O arquivo de descrição do mundo Um exemplo de arquivo de descrição do mundo do robô Karel é o seguinte: mundo(5,5) -- Define o tamanho do mundo como uma matriz 5 x 5. parede(1,1) -- Coloca uma parede na posição (1,1). parede(3,4) -- Coloca uma parede na posição (3,4). alarme(4,4) -- Coloca um alarme na posição (4,4). 3 Estrutura Mundo class Mundo { private char mundo[][] ; Mundo(String tamanho) { int l, c ; l = Character.digit(tamanho.charAt(6), 10) ; c = Character.digit(tamanho.charAt(8), 10) ; mundo = new char[l][c] ; } void constroiParede(String parede) { int l, c ; l = Character.digit(parede.charAt(7), 10) ; c = Character.digit(parede.charAt(9), 10) ; mundo[l-1][c-1] = 'p' ; } void colocaAlarme(String alarme) { int l, c ; l = Character.digit(alarme.charAt(7), 10) ; c = Character.digit(alarme.charAt(9), 10) ; mundo[l-1][c-1] = 'a' ; } public String toString() {...} //Exercicio! } 4 A classe de leitura do arquivo com a descrição do mundo import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; class LeMundo { static boolean parede(String p){ return p.startsWith("parede") ; } static boolean alarme(String p){ return p.startsWith("alarme") ; } public static void main(String[] args) throws IOException { BufferedReader inputStream = null; inputStream = new BufferedReader(new FileReader(args[0])); if(inputStream != null) { Mundo m = null ; String l; if((l = inputStream.readLine()) != null) { m = new Mundo(l) ; } while ((m != null)&&(l = inputStream.readLine()) != null) { if(parede(l)) m.constroiParede(l) ; else if(alarme(l)) m.colocaAlarme(l) ; } System.out.println(m) ; inputStream.close(); } } } 5

Upload: others

Post on 17-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: O arquivo de descrição do mundo Estrutura Mundocbraga/prog1/2009.2/mundo-karel.pdf · um alarme do mundo ou soltar um alarme no mundo. 2 O arquivo de descrição do mundo • Um

12/2/09

1

Programação I Trabalho – O mundo do robô Karel

Christiano Braga [email protected]

1

O mundo do robô Karel

•  Karel vive num mundo que possui paredes e alarmes.

•  Ele carrega uma bolsa de alarmes e é capaz de responder a alguns comandos básicos como mover-se, virar para a esquerda, pegar um alarme do mundo ou soltar um alarme no mundo.

2

O arquivo de descrição do mundo

• Um exemplo de arquivo de descrição do mundo do robô Karel é o seguinte:

mundo(5,5) -- Define o tamanho do mundo como uma matriz 5 x 5. parede(1,1) -- Coloca uma parede na posição (1,1). parede(3,4) -- Coloca uma parede na posição (3,4). alarme(4,4) -- Coloca um alarme na posição (4,4).

3

Estrutura Mundo class Mundo { private char mundo[][] ; Mundo(String tamanho) { int l, c ; l = Character.digit(tamanho.charAt(6), 10) ;

c = Character.digit(tamanho.charAt(8), 10) ; mundo = new char[l][c] ; } void constroiParede(String parede) {

int l, c ; l = Character.digit(parede.charAt(7), 10) ; c = Character.digit(parede.charAt(9), 10) ; mundo[l-1][c-1] = 'p' ;

} void colocaAlarme(String alarme) { int l, c ;

l = Character.digit(alarme.charAt(7), 10) ; c = Character.digit(alarme.charAt(9), 10) ; mundo[l-1][c-1] = 'a' ; } public String toString() {...} //Exercicio! }

4

A classe de leitura do arquivo com a descrição do mundo import java.io.FileReader; import java.io.BufferedReader; import java.io.IOException; class LeMundo {

static boolean parede(String p){ return p.startsWith("parede") ; } static boolean alarme(String p){ return p.startsWith("alarme") ; } public static void main(String[] args) throws IOException { BufferedReader inputStream = null; inputStream = new BufferedReader(new FileReader(args[0])); if(inputStream != null) { Mundo m = null ; String l; if((l = inputStream.readLine()) != null) { m = new Mundo(l) ; }

while ((m != null)&&(l = inputStream.readLine()) != null) { if(parede(l)) m.constroiParede(l) ; else if(alarme(l)) m.colocaAlarme(l) ; } System.out.println(m) ; inputStream.close(); } }

} 5