Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MarSan en 1 Julio 2015, 01:08 am



Título: Podrían hacerme favor de Revisar?
Publicado por: MarSan en 1 Julio 2015, 01:08 am
Hola, estoy haciendo mi Juego traffic Blocks, pero ahora quiero que cada bloque pueda moverse y que se guarde su movimiento, también necesito hacer que si hay un bloque frente de el bloque que necesitamos mover este no pueda moverse. Tengo la vaga idea de que con un switch se le pregunte al usuario que bloque quiere mover, pero lo que no se me ocurre es cómo hacer que se muevan los bloques y se guarde su ultima posicion así como lo demás ya antes planteado. Les dejo el código, espero puedan ayudarme.

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <windows.h>
  5. #include "instrucciones.cpp"
  6.  
  7.  
  8. using namespace std;
  9.  
  10.  
  11. main()
  12. {
  13.      int menu, ret, i, seleccion, a;
  14.      gotoxy(20,3);
  15.      for(i=0; i<2; i=ret)
  16. {
  17.      menu:
  18.      printf("BIENVENIDO A TRAFFIC BLOCKS \n MENU: \n \n");
  19.      printf(" 1.-INSTRUCCIONES\n 2.-INICIAR JUEGO\n 3.-ACERCA DE\n 4.-SALIR\n\n");
  20.      scanf("%d", &menu);
  21.      system("CLS");
  22.  
  23.  
  24.      switch(menu)
  25.      {
  26.                   case 1:
  27.                       printf("INSTRUCCIONES:");
  28.                       instructivo();
  29.  
  30.                       system("CLS");
  31.                       printf(" \nPulsa 1 si deseas volver al menu anterior\n o pulsa cualquier tecla para finalizar\n\n");
  32.                       scanf("%d", &ret);
  33.                       system("CLS");
  34.                       break;
  35.  
  36.                  case 2:
  37.                        {
  38.                             char op, c, z;
  39.                             int x=0,y=0,a;
  40.  
  41.  
  42.                             gotoxy (x,y);
  43. system ("color 17");
  44.  
  45.                             gotoxy (x,y);
  46. system ("color 17");
  47.  
  48. gotoxy(x+2,y+6);
  49. printf ("O==O");
  50. gotoxy (x+2,y+7);
  51. printf ("O==O");
  52.  
  53. gotoxy (x+2,y+8);
  54. printf ("%c%c",219,219);
  55. gotoxy (x+2,y+9);
  56. printf ("%c%c",219,219);
  57. gotoxy (x+2,y+10);
  58. printf ("%c%c",219,219);
  59. gotoxy (x+2,y+11);
  60. printf ("%c%c",219,219);
  61. gotoxy (x+2,y+12);
  62. printf ("%c%c",219,219);
  63. gotoxy (x+2,y+13);
  64. printf ("%c%c",219,219);
  65.  
  66. gotoxy (x+4,y+4);
  67. printf ("%c%c%c%c",1,1,1,1);
  68. gotoxy (x+4,y+5);
  69. printf ("%c%c%c%c",1,1,1,1);
  70.  
  71. gotoxy (x+4,y+8);
  72. printf ("%c%c",169,169);
  73. gotoxy (x+4,y+9);
  74. printf ("%c%c",169,169);
  75. gotoxy (x+4,y+10);
  76. printf ("%c%c",169,169);
  77. gotoxy (x+4,y+11);
  78. printf ("%c%c",169,169);
  79.  
  80. gotoxy (x+14,y+10);
  81. printf ("%c%c",30,30);
  82. gotoxy (x+14,y+11);
  83. printf ("%c%c",30,30);
  84. gotoxy (x+14,y+12);
  85. printf ("%c%c",30,30);
  86. gotoxy (x+14,y+13);
  87. printf ("%c%c",30,30);
  88.  
  89. gotoxy (x+14,y+10);
  90. printf ("%c%c",186,186);
  91. gotoxy (x+14,y+11);
  92. printf ("%c%c",186,186);
  93. gotoxy (x+14,y+12);
  94. printf ("%c%c",186,186);
  95. gotoxy (x+14,y+13);
  96. printf ("%c%c",186,186);
  97.  
  98. gotoxy (x+8,y+6);
  99. printf ("%c%c",14,14);
  100. gotoxy (x+8,y+7);
  101. printf ("%c%c",14,14);
  102. gotoxy (x+8,y+8);
  103. printf ("%c%c",14,14);
  104. gotoxy (x+8,y+9);
  105. printf ("%c%c",14,14);
  106.  
  107. gotoxy (x+8,y+10);
  108. printf ("%c%c",127,127);
  109. gotoxy (x+8,y+11);
  110. printf ("%c%c",127,127);
  111. gotoxy (x+8,y+12);
  112. printf ("%c%c",127,127);
  113. gotoxy (x+8,y+13);
  114. printf ("%c%c",127,127);
  115.  
  116. gotoxy (x+12,y+8);
  117. printf ("%c%c",176,176);
  118. gotoxy (x+12,y+9);
  119. printf ("%c%c",176,176);
  120. gotoxy (x+12,y+10);
  121. printf ("%c%c",176,176);
  122. gotoxy (x+12,y+11);
  123. printf ("%c%c",176,176);
  124.  
  125. gotoxy (x+14,y+6);
  126. printf ("%c%c",4,4);
  127. gotoxy (x+14,y+7);
  128. printf ("%c%c",4,4);
  129. gotoxy (x+14,y+8);
  130. printf ("%c%c",4,4);
  131. gotoxy (x+14,y+9);
  132. printf ("%c%c",4,4);
  133.  
  134. gotoxy (x+12,y+4);
  135. printf ("%c%c%c%c",205,205,205,205);
  136. gotoxy (x+12,y+5);
  137. printf ("%c%c%c%c",205,205,205,205); carrito();
  138. taxih1();
  139. taxih2();
  140. taxiv1();
  141. taxiv2();
  142. taxiv3();
  143. taxiv4();
  144. taxiv5();
  145. taxiv6();
  146. camion();
  147.  
  148. getch();
  149.  
  150.                             regresa:
  151.                             gotoxy(5,28);
  152.                             printf(" ¿Que bloque deseas mover?\n\n 1.- Carrito\n 2.- %c\n 3.- %c\n 4.- %c\n 5.- %c\n 6.- %c\n 7.- %c\n 8.- %c\n 9.- %c\n 10.- %c", 219, 1, 169, 30, 186, 14, 127, 176, 4, 205);
  153.                             scanf("%d", &seleccion);
  154.  
  155.  
  156.  
  157.                             switch(seleccion)
  158.                             {
  159.                             case 1:
  160.                             printf("prueba");
  161.                             break;
  162.                             }
  163.  
  164.                        }  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.                  case 3:
  173.                       {
  174.                       printf("ACERCA DE:");
  175.                       break;
  176.                       }
  177.                  case 4:
  178.                  {
  179.                       printf("SALIR:");
  180.                       break;
  181.                       }
  182.  
  183.      }
  184. }
  185.     printf("gracias por jugar traffic blocks");
  186.  
  187.      getch();
  188.  
  189. }

Mod: Los códigos deben ir en etiquetas GeSHi, modifica el titulo, el mismo debe ser descriptivo al problema, no hagas doble post
  


Título: Re: Podrían hacerme favor de Revisar?
Publicado por: ivancea96 en 1 Julio 2015, 02:17 am
Vamos por partes.
Lo primero: ¿Es C o C++? Las librerías y funciones que suas son de C, pero el using namespace std; es de C++. En cualquier caso, esa linea sobra, salvo que quieras hacerlo en C++.

En segundo lugar, un par de cosas: main deberías ponerlo int main(), ya que retorna int. Luego, colocas las etiquetas menu y regresa. ¿Por qué? No veo ningún uso de ellas. Si quieres solo marcar zonas, utiliza comentarios. En caso de que pienses usar GOTO, has de saber que es mejor evitarlo siempre que puedas, pues no es nada aconsejable, especialmente en un lenguaje como C que te da mucho control, entre bucles, condiciones y funciones.

Luego, ya viendo el juego:

Lo mejor sería que guardases un arreglo de estructuras o algo similar para representar los bloques en el juego. Solo dibujarlos no te dará las facilidades que te dará guardar sus posiciones en variables. Una vez tengas sus posiciones en un arreglo, puedes iterar por cada elemento del arreglo para comprobar si a donde se va a mover el bloque en cuestión está ya ocupado, o no.