Deitel 6 edição exercicio 7.21 tartaruga

Estou postando dois códigos. O primeiro deve ser salvo como Logo.java e o segundo como Logo_Test.java
daí é só compilar e boa.Os comandos estão abaixo:

1 - levantar caneta
2 - abaixar caneta
3 - virar para a esquerda (Diferente do Deitel, preferi inverter)
4 - virar para a direita
5 - andar para frente (quando acionado, será requerido o número de passos
6 - mostra o desenho (depois dá pra continuar desenhando)
7 - (sem efeito)
8 - (sem efeito)
9 - encerra o programa e mostra o desenho

//Logo.java

[code]import java.util.Scanner;

public class Logo {

public static boolean floor[][] = new boolean[20][20];
public static boolean usarCaneta;
public static int 	l=0,
					c=0;
private final byte UpPen   = 1;
private final byte DownPen = 2;
private final byte LEFT    = 3;
private final byte RIGHT   = 4;
private final byte ANDAR   = 5;
private final byte DESENHAR= 6;
private final byte FIM     = 9;
//private static byte direcoes[] = {6, 2, 4, 8};
private static int irPara = 6;

public static int getIrPara() {
	return irPara;
}

public static void setIrPara(int irPara) {
	Logo.irPara = irPara;
}

Scanner r = new Scanner(System.in);

public int comando(){
	System.out.print("LOGO: ");
	int com = Integer.parseInt(r.next());
	return com;
}//fim do método comando()

public int passos(){
	System.out.print("LOGO: passos--> ");
	int com = Integer.parseInt(r.next());
	return com;
}//fim do método passos()

public void mudarDirecao(int LeftOrRight){//muda direção da Tat
	
	int irParaAtual = getIrPara();
	
	if(LeftOrRight==LEFT){
		if(irParaAtual==2 ) setIrPara(6);
		if(irParaAtual==6 ) setIrPara(8);
		if(irParaAtual==8 ) setIrPara(4);
		if(irParaAtual==4 ) setIrPara(2);
		System.out.println("guinado para esquerda");
	}
	if(LeftOrRight==RIGHT){
		if(irParaAtual==2 ) setIrPara(4);
		if(irParaAtual==6 ) setIrPara(2);
		if(irParaAtual==8 ) setIrPara(6);
		if(irParaAtual==4 ) setIrPara(8);
		System.out.println("guinado para direita");
	}
}

public void desenhador(){
	int comand = 0;
	while(comand!=9){
		comand = comando();
		switch(comand){
			case UpPen: 	usarCaneta = false; break;
			case DownPen:	usarCaneta = true; break;
			case LEFT:		mudarDirecao(3); break;
			case RIGHT:		mudarDirecao(4); break;
			case ANDAR:		caminhar(); break;
			case DESENHAR:  mostrarQuadro(); break;
			case FIM: 		comand = FIM; break;
		}
	}
}

public boolean definirCelula(){
	boolean definicao=false;
	if(usarCaneta==true) definicao = true;
	return definicao;
}

public void caminhar(){
	int npassos = passos();
				
		if(getIrPara()==6){
			for(int i=0; i<npassos ; i++){
				c++;
				if(c>19) c = 19;
				if(usarCaneta==true)floor[l][c] = true;
			}
		}
		else if (getIrPara()==4){
			for(int i=0; i<npassos ; i++){
				c--;
				if(c><0) c = 0;
				if(usarCaneta==true)floor[l][c] = true;
			}
		}
		else if (getIrPara()==8){
			for(int i=0; i<npassos ; i++){
				l--;
				if (l><0) l = 0;
				if(usarCaneta==true)floor[l][c] = true;
			}
		}
		else if (getIrPara()==2){
			for(int i=0; i<npassos ; i++){
				l++;
				if(l>19) l = 19;
				if(usarCaneta==true)floor[l][c] = true;
			}
		}
		else System.out.println("\nDireção não identificada");		
}//FIM do método CAMINHAR

public void mostrarQuadro(){
	int a, b;
	for(a=0 ; a<floor.length ; a++){
		for(b=0 ; b><floor[0].length ; b++){
			if(floor[a][b]==true)
				System.out.print("O  ");
			if(floor[a][b]==false)
				System.out.print("   ");
		}
	System.out.println();
	}
}

}[/code]

//Logo_Test.java

public class Logo_Test {

	public static void main(String[] args) {
		Logo logo = new Logo();
		
		logo.desenhador();
		logo.mostrarQuadro();
	}
}

Abração ae galera… e vamos estudar hein!
>