Foros - Stratos

Programadores => Código de la Semana => Mensaje iniciado por: pobreotaku en 12 de Abril de 2015, 08:46:54 AM

Título: gnu rocks! - n_zombie
Publicado por: pobreotaku en 12 de Abril de 2015, 08:46:54 AM
hola gente del foro, hace tiempo hice este programito llamado n_zombie, el cual es un jueguito para la consola.

esta escrito en c y hace uso de la libreria ncurses para el manejo de los graficos, por aca el codigo
https://github.com/nasciiboy/ncurses/blob/master/n_zombie/n_zombie.c
para compilar utilizo un
g++ -Wall n_zombie.c -o test -lncurses
y luego un
./test
bueno mas alla del juego, es que mientras buscaba una manera menos engorrosa de mostrar un grafico
utilice una macro de preprosesador para pasar una cadena a un arreglo, la gracia es que dicha cadena puede
pasar cualquier cosa suempre y cuando empiece y termine con comillas

#define CAT( row, cont )   strcpy( &n_zombie[ row ][ 0 ], #cont )

char n_zombie[ 25 ][ 83 ];
CAT( 0,"                                                                                ");
CAT( 1,"                                                                                ");
CAT( 2,"                                                                                ");
CAT( 3,"                                                                                ");
CAT( 4,"   _|      _|                                          _|        _|             ");
CAT( 5,"   _|_|    _|      _|_|_|_|    _|_|    _|_|_|  _|_|    _|_|_|          _|_|     ");
CAT( 6,"   _|  _|  _|          _|    _|    _|  _|    _|    _|  _|    _|  _|  _|_|_|_|   ");
CAT( 7,"   _|    _|_|        _|      _|    _|  _|    _|    _|  _|    _|  _|  _|         ");
CAT( 8,"   _|      _|      _|_|_|_|    _|_|    _|    _|    _|  _|_|_|    _|    _|_|_|   ");
CAT( 9,"                                                                                ");
CAT(10,"                                                                                ");
CAT(11,"            ,         _   _    o ___                                            ");
CAT(12,"           /|   / o  | | | |   // (_)                                           ");
CAT(13,"            |__/     | | | |    \__   _  _  _                                   ");
CAT(14,"            | \   |  |/  |/     /    / |/ |/ |                                  ");
CAT(15,"            |  \_/|_/|__/|__/   \___/  |  |  |_/                                ");
CAT(16,"                                                                                ");
CAT(17,"                                                                                ");
CAT(18,"                                        ___,   _   _                            ");
CAT(19,"                                       /   |  | | | |                           ");
CAT(20,"                                      |    |  | | | |                           ");
CAT(21,"                                      |    |  |/  |/                            ");
CAT(22,"                                       \__/\_/|__/|__/                          ");
CAT(23,"                                                                                ");
CAT(24,"                                                                                ");

incluso cosas como

"  ,           ,  "
" /             \ "
"((__-^^-,-^^-__))"
" `-_---' `---_-' "
"  `--|o` 'o|--'  "
"     \  `  /     "
"      ): :(      "
"      :o_o:      "
"       "-"       "

miren la ultima linea -> "       "-"       "
raro no?
alguien sabe porque esto funciona?