lunes, 28 de febrero de 2011

Crear dimensiones en C con Ncurses

Imaginemos que tenemos un mapa de juego. Cuando lo imprimimos "tal cual", será de un caracter no se intiende nada.

Y si queremos dibujar de "dos caracteres," habrá que tocatear el codigo mucho. En un juego un caracter es nada interesante, cuando representando un caracter en 2 o mas dimensiones podemos dibujar objetos.

por ejemplo: 
$=un tanque en 1 caracter






Pero cuando dibujamos en 2 dimensiones  (5x5) parece mas a un tanque de juego.




Pues para dibujar el mapa en 2 dimensiones SIN TOCAR EL MAPA ORIGINAL, diseñamos esta función:

#include <stdio.h>
#include <string.h>
#include <curses.h>
#include <unistd.h>

void Dimension(int x, int y, char caracter, int Dimension);

int main(int argc, char** argv)
{
    initscr();
    char palabra[5][30]={"#####","#$  #","#  b#","#####"};
   
    int i,j;
        for (i=0;i<4;i++)
            for (j=0;j<strlen(palabra[i]);j++)
            Dimension(i,j,palabra[i][j],5);
        refresh();
       
    getch();
    endwin();
    return 0;
}

void Dimension(int x, int y, char caracter, int Dimension){
    int i,j;
    char tanque[25]={'$','$','$','$','$',
                    ' ','$','$','$',' ',
                    ' ','$','$','$','$',
                    ' ','$','$','$',' ',
                    '$','$','$','$','$',};

   int k=0;
    for (i=x*Dimension;i<x*Dimension+Dimension;i++){
        for (j=y*Dimension;j<y*Dimension+Dimension;j++){
             if (caracter=='$' && Dimension==5)
                 mvprintw(i+1,j+1,"%c",tanque[k++]);
             else mvprintw(i+1,j+1,"%c",caracter);
        }
    }
}
El resultado sería esta imagen.
Para poder compilar tiene que instalar primero Ncurses (Linux) o Pdcurses (Windows).

No hay comentarios:

Publicar un comentario