Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa simulador de LOGO...

Estas en el tema de Programa simulador de LOGO... en el foro de C/C++ en Foros del Web. Estoy haciendo un programa que dibuja una cuadricula de 50 x 50 ceros, te dice la ubicacion en la que estás, te da las opciones ...
  #1 (permalink)  
Antiguo 07/06/2011, 23:19
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 6 meses
Puntos: 8
Pregunta Programa simulador de LOGO...

Estoy haciendo un programa que dibuja una cuadricula de 50 x 50 ceros, te dice la ubicacion en la que estás, te da las opciones

Pluma arriba (así al caminar no dibujas nada)
pluma abajo (al caminar sí dibujas)
Vuelta derecha (Giras a la derecha)
Vuelta izquierda (Giras a la izquierda)
Caminar (Caminas X pasos, con pluma abajo dibujas, con pluma arriba no)
Desplegar cuadricula (para ver como vas)
Salir...

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     int piso[50][50] = {0};
  6.     int a;
  7.     int b;
  8.     int comando = 0;
  9.     int pluma;
  10.     int direccion = 1;
  11.     int pasos;
  12.  
  13.     printf("Simulador de LOGO v0.1\n");
  14.     printf("By Reethok\n\n");
  15.  
  16.     for(a = 0; a < 50; a++){
  17.         for(b = 0; b < 50; b++){
  18.             printf("%d", piso[a][b]);
  19.             }
  20.         printf("\n");
  21.         }
  22.  
  23.     a = 30; b = 30;
  24.  
  25.     while(comando != 9){
  26.         printf("Ubicacion (%d,%d)\n", a, b);
  27.         printf("\nTabla de comandos:\n\n");
  28.         printf("Comando\tSignificado\n\n");
  29.         printf("1\tPluma arriba\n");
  30.         printf("2\tPluma abajo\n");
  31.         printf("3\tVuelta a la derecha\n");
  32.         printf("4\tVuelta a la Izquierda\n");
  33.         printf("5\tCaminar\n");
  34.         printf("6\tDesplegar imagen\n");
  35.         printf("9\tSalir\n\n");
  36.         printf("Comando: ");
  37.         scanf("%d", &comando);
  38.  
  39.         switch(comando){
  40.             case 1:
  41.                 pluma = 1;
  42.                 break;
  43.             case 2:
  44.                 pluma = 2;
  45.                 break;
  46.             case 3:
  47.                 direccion += 1;
  48.                 if(direccion == 5)
  49.                     direccion = 1;
  50.                 break;
  51.             case 4:
  52.                 direccion -= 1;
  53.                 if(direccion == 0)
  54.                     direccion = 4;
  55.                 break;
  56.             case 5:
  57.                 printf("Cantidad de pasos: ");
  58.                 scanf("%d", &pasos);
  59.                 if(pluma == 1){
  60.                     switch(direccion){
  61.                         case 1:
  62.                             while(a >= 0 && pasos > 0){ // PROBLEMA AQUI <<<<<<<
  63.                                 a--; // PROBLEMA AQUI <<<<<<<<<<<<<<<<
  64.                                 }
  65.                             break;
  66.                         }
  67.                     }
  68.  
  69.             }
  70.         }
  71.  
  72.     printf("\nHasta luego!\n");
  73.  
  74.     getchar();
  75.     return 0;
  76. }

Aún está incompleto, pero lo que sucede es que al darle opcion 5, caminar 10 pasos... sigue desplegando Ubicacion (30, 30), cuando debería ser (20,30)... osea la variable a no se altera... por qué sucede esto? u.u

Gracias!

Saludos...
  #2 (permalink)  
Antiguo 08/06/2011, 11:13
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Programa simulador de LOGO...

Mira no se si segui los pasos como tu los seguiste, pero si al iniciar el menu tu eliges la opcion 5 no entra en la condicion if(pluma == 1) ya que pluma no esta inicializada en nada, entonces al no estar inicializada no puede cumplir con esa opcion, imagino que ese es el caso que estas intentando resolver, te recomiendo que tambien te fijes muy bien en el while dentro de esa condicion...

Saludos y cualquier otra duda comentala
__________________
Bienvenidos los karmas.
Quejas, sugerencias o dudas, se awantan......
  #3 (permalink)  
Antiguo 08/06/2011, 13:39
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años, 6 meses
Puntos: 8
Respuesta: Programa simulador de LOGO...

Ya lo terminé :D

Aquí tienen el código para que vean cómo quedó ^^

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     int piso[50][50] = {0};
  6.     int a;
  7.     int b;
  8.     int c;
  9.     int d;
  10.     int comando = 0;
  11.     int pluma = 1;
  12.     int direccion = 1;
  13.     int pasos;
  14.  
  15.     printf("Simulador de LOGO v0.1\n");
  16.     printf("By Reethok\n\n");
  17.  
  18.     for(a = 0; a < 50; a++){
  19.         for(b = 0; b < 50; b++){
  20.             printf("%d", piso[a][b]);
  21.             }
  22.         printf("\n");
  23.         }
  24.  
  25.     a = 0; b = 0;
  26.  
  27.     while(comando != 9){
  28.         printf("Ubicacion (%d,%d)\n", a, b);
  29.         printf("Pluma: ");
  30.  
  31.         if(pluma == 1)
  32.             printf("Arriba\n");
  33.         else
  34.             printf("Abajo\n");
  35.  
  36.         printf("Direccion: ");
  37.  
  38.         switch(direccion){
  39.             case 1:
  40.                 printf("Arriba\n");
  41.                 break;
  42.             case 2:
  43.                 printf("Derecha\n");
  44.                 break;
  45.             case 3:
  46.                 printf("Abajo\n");
  47.                 break;
  48.             case 4:
  49.                 printf("Izquierda\n");
  50.                 break;
  51.             }
  52.  
  53.         printf("\nTabla de comandos:\n\n");
  54.         printf("Comando\tSignificado\n\n");
  55.         printf("1\tPluma arriba\n");
  56.         printf("2\tPluma abajo\n");
  57.         printf("3\tVuelta a la derecha\n");
  58.         printf("4\tVuelta a la Izquierda\n");
  59.         printf("5\tCaminar\n");
  60.         printf("6\tDesplegar imagen\n");
  61.         printf("9\tSalir\n\n");
  62.         printf("Comando: ");
  63.         scanf("%d", &comando);
  64.  
  65.         switch(comando){
  66.             case 1:
  67.                 pluma = 1;
  68.                 break;
  69.             case 2:
  70.                 pluma = 2;
  71.                 break;
  72.             case 3:
  73.                 direccion += 1;
  74.                 if(direccion == 5)
  75.                     direccion = 1;
  76.                 break;
  77.             case 4:
  78.                 direccion -= 1;
  79.                 if(direccion == 0)
  80.                     direccion = 4;
  81.                 break;
  82.             case 5:
  83.                 printf("Cantidad de pasos: ");
  84.                 scanf("%d", &pasos);
  85.                 if(pluma == 1){
  86.                     switch(direccion){
  87.                         case 1:
  88.                             while(a > 0 && pasos > 0){
  89.                                 a--;
  90.                                 pasos--;
  91.                                 }
  92.                             break;
  93.                         case 2:
  94.                             while(b < 49 && pasos > 0){
  95.                                 b++;
  96.                                 pasos--;
  97.                                 }
  98.                             break;
  99.                         case 3:
  100.                             while(a < 49 && pasos > 0){
  101.                                 a++;
  102.                                 pasos--;
  103.                                 }
  104.                             break;
  105.                         case 4:
  106.                             while(b > 0 && pasos > 0){
  107.                                 b--;
  108.                                 pasos--;
  109.                                 }
  110.                             break;
  111.                         }
  112.                     }
  113.                 else{ // Si Pluma es = 2 (Pluma esta abajo)
  114.                     switch(direccion){
  115.                         case 1:
  116.                             while(a > 0 && pasos > 0){
  117.                                 piso[a][b] = 1;
  118.                                 a--;
  119.                                 pasos--;
  120.                                 }
  121.                             break;
  122.                         case 2:
  123.                             while(b < 49 && pasos > 0){
  124.                                 piso[a][b] = 1;
  125.                                 b++;
  126.                                 pasos--;
  127.                                 }
  128.                             break;
  129.                         case 3:
  130.                             while(a < 49 && pasos > 0){
  131.                                 piso[a][b] = 1;
  132.                                 a++;
  133.                                 pasos--;
  134.                                 }
  135.                             break;
  136.                         case 4:
  137.                             while(b > 0 && pasos > 0){
  138.                                 piso[a][b] = 1;
  139.                                 b--;
  140.                                 pasos--;
  141.                                 }
  142.                             break;
  143.                         }
  144.                     }
  145.                 break;
  146.             case 6:
  147.                 for(c = 0; c < 50; c++){
  148.                     for(d = 0; d < 50; d++){
  149.                         printf("%d", piso[c][d]);
  150.                         }
  151.                     printf("\n");
  152.                     }
  153.                 break;
  154.  
  155.             }
  156.         }
  157.  
  158.     printf("\nHasta luego!\n");
  159.  
  160.     fflush(stdin);
  161.     getchar();
  162.     return 0;
  163. }

Que tal quedó? ^^

Saludos!

Etiquetas: logo, programa, simulador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:02.