elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ayuda para crear una aplicacion "grafico de tortuga"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda para crear una aplicacion "grafico de tortuga"  (Leído 5,326 veces)
Kenkox

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Ayuda para crear una aplicacion "grafico de tortuga"
« en: 4 Febrero 2012, 06:10 am »


Imagine una tortuga mecanica que camina por todo el cuarto, bajo el control de una aplicacion en java. La tortuga sostiene una pluma en una de dos posiciones, arriba o abajo. Mientras la pluma esta abajo, la tortuga va trazando figuras a medida que se va moviendo, y mientras la pluma esta arriba, la tortuga se mueve alrededor libremente, sin trazar nada. En este problema, usted simulara la operacion de la tortuga, y creara un bloc de dibujo computarizado. Utilize un arreglo de 20 x 20 llamado piso, que se inicialice en ceros. Lea los comandos de un arreglo que la contenga. Lleve el registro de la posicion actual de la tortuga en todo momento, y si la pluma se encuentra arriba o abajo. Suponga que la tortuga siempre empieza en posicion (0,0) del piso, con su pluma hacia arriba. A medida que la tortuga se vaya desplazando con la pluma hacia abajo, asigne 1 a los elementos apropiados del arreglo piso. Cuando se de el comando 6, siempre que haya un 1 en el arreglo muestee un asterisco o cualquier caracter. Siempre que haya un cero, mueste un caracter en blanco. " comandos: 1: pluma arriba, 2:pluma abajo 3: voltear a la derecha, 4:voltear a la izquierda, 5,X avanzar hacia delante un numero X de espacios.. 6: imrpimir arreglo.. 9: fin de los datos, centinela.

Este problema, lo vi en un libro, es de Deitel&Deitel, y pues comenze a hacerlo hace unos pocos dias.. el problema fue que al momento de ir avanzando al programa, cada vez mas me perdia XDDDD la verdad es que no se como hacer que la tortuga tome una direccion u otra, asi que cree dos enumeraciones, una para la pluma, y otra para la direccion... este codigo todo lo hize yo, no he depurado ni nada, asi que si le falta algun ";" o hay algun error de escritura, disculpen... el codigo que presento, esta incompleto, en gedit lo tenia mas largo, habia puesto if anidados.. pero despues supe que era mucho lio, y que necesitaba preguntar.

No pido que me escriban el programa, lo que busco es que me den una ayuda, para que encuentre la manera para realizar la aplicacion, no sé podrian guiarme o algo asi. Cabe resaltar que apenas comenze hace 2 meses y medio en java. Lo que no se realizar, es apartir del case 5 xDDD no se como hacer que avanze conforme indique el usuario, no se como hacer para que segun cambien de direccion >.< tenia pensado varios if aninados, lo hize, pero la verdad no me salio mucho que digamos


Muchas gracias de Antemano


Código
  1. import java.util.Scanner;
  2.  
  3. public class Tortuga
  4. {
  5. Scanner entrada = new Scanner( System.in );
  6. private int piso[][] = new int[20][20];
  7. private int centinela = 0;
  8. private int avanze = 0;
  9. private int filaActiva = 0;
  10. private int columnaActiva = 0;
  11. private enum Estado = { LEFT, RIGHT };
  12. private enum Pluma = { UP, DOWN };
  13. Estado direccion;
  14. Pluma estado;
  15. public static void main( String args[] )
  16. {
  17.                for(int contador = 0;contador < piso.lenght; contador++) //inicializamos todo el arreglo
  18. {
  19. for(int contador2 = 0; contador2 < piso[].lenght; contador2++)
  20. piso[contador][contador2] = 0;
  21.  
  22. } // termina for
  23. System.out.println("Ponga mucha atencion!, estos seran los comandos: \n 1: Pluma arriba\n2: Pluma abajo\n3: Voltear a la derecha\n4: voltear a la izquierda\n5, \"X\": Avanzar hacia delante\n6: Imprimir tablero\n9: Fin del juego");
  24. imprimir();
  25. System.out.println("La tortuga iniciara en el espacio [0][0]...Por favor inserte el comando");
  26. centinela = entrada.nextInt;
  27.                 //inicia while
  28. while( centinela > 9 || centinela <= 0 || centinela == 7 || centinela == 8)
  29. {
  30. System.out.println("Por favor inserte un numero valido");
  31. centinela = entrada.nextInt;
  32. }
  33. while( centinela != 9 )
  34. {
  35. switch( centinela )
  36. {
  37. case 1: estado = Pluma.UP;
  38. break;
  39. case 2: estado = Pluma.DOWN;
  40. break;
  41. case 3: direccion = Estado.RIGHT;
  42. break;
  43. case 4: direccion = Estado.LEFT;
  44. break;
  45. case 5: System.out.println("Por favor, inserte el numero de espacios para avanzar");
  46. avanze = entrada.nextInt();
  47. if( estado == Pluma.UP )
  48. {
  49.             }
  50. break;
  51. case 6: imprimir(arreglo[]);
  52. break;
  53. }
  54.  
  55. System.out.println("Por favor inserte otro comando");
  56. centinela = entrada.nextInt;
  57. } // termina while
  58.  
  59.  
  60. } // termina main
  61.  
  62. private static void imprimir()
  63. { //inicia imprimir
  64. System.out.println("\nAhora mismo te mostraremos el tablero:");
  65. for(int fila = 0; fila < piso.lenght; fila++)
  66. {
  67. for(int columna = 0; columna < piso[fila].lenght; columna++)
  68. System.out.printf("%d ", piso[fila][columna] );
  69. System.out.println("");
  70. }
  71.  
  72. } // termina imprimir
  73.  
  74. private static void imprimir(int arreglo[][])
  75. { //inicia
  76. System.out.println("\nAhora mismo te mostraremos el tablero:");
  77. for(int fila = 0; fila < piso.lenght; fila++)
  78. {
  79. for(int columna = 0; columna < piso[fila].lenght; columna++)
  80. System.out.printf("%d ", piso[fila][columna] );
  81. System.out.println("");
  82. }
  83. } //termina
  84. }


En línea

visualfree

Desconectado Desconectado

Mensajes: 201


Ver Perfil
Re: Ayuda para crear una aplicacion "grafico de tortuga"
« Respuesta #1 en: 17 Marzo 2012, 07:22 am »

Te hice un ejemplo rapido ...

tu lo adaptas a tus necesidades...

Al ejecutar Comenzar te tira las codenadas de los enemigos pero no los muestra
los movimientos son" w" arriba "s" abajo "d" derecha "a" izquierda intenta no salirte del
mapa para que no te arroje errores pero bueno ahi lo mejoras tu suerte...



clase principal:

Código:
import java.util.*;
class Comenzar{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
Mapa map=new Mapa(10,10);
Jugador jug=new Jugador();
int c;
map.setMapa();
int largo=0;
map.setMapaUpdate(0,0);
map.setEnemigos(4);
do{
map.setMapa();
String mov=in.nextLine();
if(mov.equals("w"))
{
jug.setArriba();
map.setMapaUpdate(jug.getI(),jug.getX());
}else if(mov.equals("s"))
{
jug.setAbajo();
map.setMapaUpdate(jug.getI(),jug.getX());
}
else if(mov.equals("a"))
{
jug.setIzquierda();
map.setMapaUpdate(jug.getI(),jug.getX());
}
else if(mov.equals("d"))
{
jug.setDerecha();
map.setMapaUpdate(jug.getI(),jug.getX());
}
else if(mov.equals("exit"))
{
largo=1000;
}

map.getMapa();
largo=largo+1;
}while(largo<=1000);
{
System.out.println("Gracias por Jugar!");
}
}
}

clase Jugador:

Código:
class Jugador{
String rostro="X";
int i=3;
int x=3;
public void setArriba()
{
i=i-1;
x=x;
}
public void setAbajo()
{
i=i+1;
x=x;
}
public void setDerecha()
{
i=i;
x=x+1;
}
public void setIzquierda()

{
i=i;
x=x-1;
}
public int getI()
{
return i;
}
public int getX()
{
return x;
}
}


En caso de que quieras enemigos.

Código:
import java.util.*;
class Enemigos{
        int cantEnemigos=0;
        String rostro="Z";
        Random pos=new Random();
        int i;
        int x;
        public void crearEnemigos(int v,int h)
        {
                        i=pos.nextInt(v);
                        x=pos.nextInt(h);
        }
        public int getPosI()
        {
                return i;
        }
        public int getPosX()
        {
                return x;
        }
        public String getRostro()
        {
                return rostro;
        }
}

Creacion del mapa.

Código:
public class Mapa{
int vertical=0;
int horizontal=0;
String[][] mapa;
String personaje="X";
String enemigo="Z";
public Mapa(int vertical,int horizontal)
{
this.vertical=vertical;
this.horizontal=horizontal;
mapa=new String[vertical][horizontal];
}
public int getVertical()
{
return vertical;
}
public int getHorizontal()
{
return horizontal;
}

public void setMapa()
{
for(int i=0;i<vertical;i++)
{
for(int x=0;x<horizontal;x++)
{
mapa[i][x]="-";
}
}
}
public void setMapaUpdate(int x,int y)
{
mapa[x][y]=personaje;
}
public void setEnemigos(int cantidad)
{
Enemigos[] en=new Enemigos[cantidad];
for(int i=0;i<cantidad;i++)
{
en[i]=new Enemigos();
en[i].crearEnemigos(5,5);
mapa[en[i].getPosI()][en[i].getPosX()]="n";
System.out.println(en[i].getPosI()+","+en[i].getPosX());

}
}
public void getMapa()
{
for(int i=0;i<vertical;i++)
{
for(int x=0;x<horizontal;x++)
{
System.out.print(mapa[i][x]);

}
System.out.print("\n");

}
}
}


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 17,378 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
ayuda para crear un codigo "porfa"??
Scripting
carwen 0 2,060 Último mensaje 3 Noviembre 2011, 00:55 am
por carwen
Simulador de "La tortuga y la Liebre" :)
Programación General
reethok 0 6,281 Último mensaje 23 Diciembre 2011, 12:39 pm
por reethok
Crear aplicación basada en "módulos"
Programación C/C++
Alitohq 5 2,864 Último mensaje 27 Julio 2012, 17:55 pm
por Alitohq
Facewash, una aplicación para "lavar tu cara" en Facebook
Noticias
wolfbcn 0 2,631 Último mensaje 24 Enero 2013, 17:49 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines