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
[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!
>