Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Blaster en 5 Octubre 2012, 02:20 am



Título: Juego snake en c++
Publicado por: Blaster en 5 Octubre 2012, 02:20 am
El codigo ya esta corregido, la libreria (conio2.h) es la que provocaba
el fallo; este es el code funcional pa quien lo quiera compilar
y ejecutar gracias a todos ;)

  
Código
  1. #include <windows.h>
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5.  
  6. #define ARRIBA 72
  7. #define IZQUIERDA 75
  8. #define DERECHA 77
  9. #define ABAJO 80
  10. #define ESC 27
  11.  
  12. int cuerpo[200][2];
  13. int n = 1, tam = 10, dir = 3;
  14. int x = 10, y = 12;
  15. int xc = 30, yc = 15;
  16. int velocidad = 60;
  17. char tecla;
  18.  
  19. void gotoxy(int x, int y)
  20. {
  21.    HANDLE hCon;
  22.    COORD dwPos;
  23.  
  24.    dwPos.X = x;
  25.    dwPos.Y = y;
  26.    hCon = GetStdHandle(STD_OUTPUT_HANDLE);
  27.    SetConsoleCursorPosition(hCon,dwPos);
  28. }
  29. void OcultaCursor() {
  30.    CONSOLE_CURSOR_INFO cci = {100, FALSE};
  31.  
  32.    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cci);
  33. }
  34. void pintar(){  
  35.     for(int i=2; i < 78; i++){
  36.        gotoxy (i, 3); printf ("%c", 205);
  37.        gotoxy(i, 23); printf ("%c", 205);
  38.        }
  39.     for(int v=4; v < 23; v++){
  40.        gotoxy (2,v);  printf ("%c", 186);
  41.        gotoxy(77,v);  printf ("%c", 186);
  42.        }
  43.     gotoxy  (2,3);    printf ("%c", 201);
  44.     gotoxy (2,23);    printf ("%c", 200);
  45.     gotoxy (77,3);    printf ("%c", 187);
  46.     gotoxy(77,23);    printf ("%c", 188);
  47.     }  
  48. void guardar_posicion(){
  49.     cuerpo[n][0] = x;
  50.     cuerpo[n][1] = y;
  51.     n++;
  52.     if(n == tam) n = 1;
  53. }
  54. void dibujar_cuerpo(){
  55.      for(int i = 1; i < tam; i++){
  56.      gotoxy(cuerpo[i][0] , cuerpo[i][1]); printf("*");
  57.     }
  58. }
  59. void borrar_cuerpo(){
  60.     gotoxy(cuerpo[n][0] , cuerpo[n][1]); printf(" ");
  61.    }
  62. void teclear(){
  63.     if(kbhit()){
  64.            tecla = getch();
  65.            switch(tecla){
  66.                case ARRIBA : if(dir != 2) dir = 1; break;
  67.                case ABAJO : if(dir != 1) dir = 2; break;
  68.                case DERECHA : if(dir != 4) dir = 3; break;
  69.                case IZQUIERDA : if(dir != 3) dir = 4; break;
  70.           }
  71.     }
  72. }
  73. void comida()
  74. {
  75.     if(x == xc && y == yc)
  76.     {
  77.          xc = (rand() % 73) + 4;
  78.          yc = (rand() % 19) + 4;
  79.  
  80.          tam++;
  81.          gotoxy(xc, yc); printf("%c", 4);
  82.     }
  83. }
  84. bool game_over()
  85. {
  86.     if(y == 3 || y == 23 || x == 2 || x == 77) return false;
  87.     for(int j = tam - 1; j > 0; j--){
  88.             if(cuerpo[j][0] == x &&  cuerpo[j][1] == y)
  89.             return false;
  90.     }
  91.    return true;
  92. }
  93. int main()
  94. {
  95.    OcultaCursor();
  96.  
  97.    pintar();
  98.   gotoxy(xc, yc); printf("%c", 4);
  99.  
  100.    while(tecla != ESC && game_over())
  101.    {
  102.         borrar_cuerpo();
  103.         guardar_posicion();
  104.         dibujar_cuerpo();
  105.         comida();
  106.         teclear();
  107.         teclear();
  108.  
  109.         if(dir == 1) y--;
  110.         if(dir == 2) y++;
  111.         if(dir == 3) x++;
  112.         if(dir == 4) x--;
  113.  
  114.         Sleep(velocidad);
  115.         }
  116.    pintar();
  117.    return 0;
  118. }


Título: Re: Necesito localizar un error en el juego de snake hecho en c++
Publicado por: Blaster en 5 Octubre 2012, 21:12 pm
Editado


Título: Re: Necesito localizar un error en el juego de snake hecho en c++
Publicado por: X3R4CK3R en 6 Octubre 2012, 23:03 pm
hola por que nadie me ayuda quiero corregir este code :-(
les agradeceria mucho.

Quizás porque nadie usa conio2.h, te aconsejaría que usases librerías estándares.

Saludos


Título: Re: Necesito localizar un error en el juego de snake hecho en c++
Publicado por: Blaster en 6 Octubre 2012, 23:18 pm
ahh ya veo tomare tu consejo
gracias ;)


Título: Re: Necesito localizar un error en el juego de snake hecho en c++
Publicado por: flony en 6 Octubre 2012, 23:24 pm
supongo que porque cada librería tiene funciones propias que no hacen otras, y se debería conocer el funcionamiento de esa librería para saber si to code esta bien o no....eso si soluciones a tu codigo es muy alto el nivel para mi, soy iniciado en esto


Título: Re: Necesito localizar un error en el juego de snake hecho en c++
Publicado por: Blaster en 7 Octubre 2012, 00:55 am
supongo que porque cada librería tiene funciones propias que no hacen otras, y se debería conocer el funcionamiento de esa librería para saber si to code esta bien o no....eso si soluciones a tu codigo es muy alto el nivel para mi, soy iniciado en esto

gracias x la aclaracion amigo
un saludo ;)


Título: Re: Juego snake en c++
Publicado por: fary en 7 Octubre 2012, 11:43 am
Este tipo de juegos me parece que se hacen con un  array multidimensional del mapa, lo que facilita muchisimo las cosas... de la forma que lo haces no sería correcta.

un saludo.