Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2011, 23:19
reethok
 
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...