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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Base juego en C (consola)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Base juego en C (consola)  (Leído 1,186 veces)
v4char

Desconectado Desconectado

Mensajes: 61



Ver Perfil
Base juego en C (consola)
« en: 18 Noviembre 2015, 22:14 pm »

Esto es una base de juego para dar ideas de como desarroyar un juego en C obiamente no soy un experto en C pero puede servir a la gente que esta empezando y quiere hacer juegos

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <termios.h>
  4. #include <unistd.h>
  5.  
  6. #ifdef _WIN32
  7.   #include <windows.h>
  8. #else
  9.   #include <sys/ioctl.h>
  10. #endif
  11.  
  12. int getch(void)
  13. {
  14.   struct termios oldattr, newattr;
  15.   int ch;
  16.   tcgetattr( STDIN_FILENO, &oldattr );
  17.   newattr = oldattr;
  18.   newattr.c_lflag &= ~( ICANON | ECHO );
  19.   tcsetattr( STDIN_FILENO, TCSANOW, &newattr );
  20.   ch = getchar();
  21.   tcsetattr( STDIN_FILENO, TCSANOW, &oldattr );
  22.   return ch;
  23. }
  24.  
  25. void dibujar(int filas,int columnas,char *texto,int pos_x,int pos_y)
  26. {
  27.   int i,j;
  28.   for(i = 0;i < filas;i++)
  29.   {
  30.      for (j = 0;j < columnas;j++)
  31.      {
  32.         if(j == 0 || j == columnas-1)
  33.         {
  34.            printf("|");
  35.         }
  36.         else if(i == 0 || i == filas-1)
  37.         {
  38.            printf("=");
  39.         }
  40.         else if(i==pos_x && j==pos_y)
  41.         {
  42.            printf("%s",texto);
  43.            j = j-1 + strlen(texto);
  44.         }
  45.         else
  46.         {
  47.            printf(" ");
  48.         }
  49.      }
  50.   }  
  51. }
  52.  
  53. int main ()
  54. {
  55.   int columnas,filas,x=5,y=5,tecla;
  56.  
  57.   #ifdef _WIN32
  58.      CONSOLE_SCREEN_BUFFER_INFO csbi;
  59.      GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
  60.      columnas = csbi.srWindow.Right - csbi.srWindow.Left + 1;
  61.      filas = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
  62.   #else
  63.      struct winsize w;
  64.      ioctl(0, TIOCGWINSZ, &w);
  65.      filas=w.ws_row;
  66.      columnas=w.ws_col;
  67.    #endif
  68.  
  69.   while (1)
  70.   {
  71.      dibujar(filas,columnas,"@" ,x,y);
  72.      tecla = getch();
  73.      if (tecla == 66)
  74.      {
  75.         x++;
  76.      } else if(tecla == 65)
  77.      {
  78.         x--;
  79.      }
  80.  
  81.      if (tecla == 67)
  82.      {
  83.         y++;
  84.      } else if(tecla == 68)
  85.      {
  86.         y--;
  87.      }
  88.   }
  89.  
  90.   return 0;
  91. }

Por ahora solo funciona en Linux pero estoy intentado hacer la portabilidad, se mueve con las flechas


« Última modificación: 18 Noviembre 2015, 22:18 pm por v4char » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines