Libros y Papers sobre C++

¿Querés aprender C/C++? Ahora no vas a tener excusa.

Les traigo una post del foro elhacker.net donde se encuentran, para descarga directa, una gran cantidad de libros y papers sobre programación en C y C++, tanto en plataformas Windows como Linux. Hay gran variedad de temas sobre programación en C/C++, como programación de videojuegos, de sockets, o de interfaces Qt4.

El link para ingresar al post: [Libros/Papers] Programación en C/C++.

Shove It! Mi juego ya está terminado

Después de una ausencia de unos días en el blog he vuelto. Y traigo conmigo mi nuevo juego. Está en face BETA, ya que aún me falta crear un editor de mapas y nuevos mapas. Pero el proyecto en sí ya está listo.

Ya he terminado de programar el juego, sólo me quedan aspectos exteriores.

Para los que lo quieran probar, la web del proyecto es: sourceforge.net/projects/shoveit.

Desde allí lo pueden descargar para probarlo. Ojo! Recién cuenta con un mapa que es de prueba, no tiene ninguna dificultad en su resolución, pero es para probar el sistema de colisiones y otros movimientos. La versión 0.2 implementará un editor de mapas y mapas para resolver.

En breve terminaré las modificaciones para subir la versión 0.2. Además compilaré una versión para Windows.

Para compilarlo necesitan poseer las bibliotecas SDL. Para instalarlas en una distribución basada en Debian (como Ubuntu) sólo debes ejecutar, como root, el siguiente comando:

apt-get install libsdl1.2-dev

El juego cuenta con una serie de clases programadas por mí para facilitar la programación del juego bastantes interesantes. Si tengo tiempo las voy a compilar como librerías para programar junto con SDL.

Un screenshot del juego:

El juego consiste en acomodar todas las cajas dentro de los casilleros marcados en el mapa. Como en el caso del screenshot, con la + tengo que empujar la caja hasta acomodarla en el cuadrado que tiene contorno blanco y el centro negro. Se gana una vez que todas las caja estén acomodadas en estos cuadrados.

Obviamente esto no tiene nada de dificultad porque es solo un mapa de pruebas. En la versión 0.2, como ya dije, habrán mapas para ya poder jugar y pensar :).

Categorías:C/C++, Programación

Descomprimir archivos en Linux desde consola

En modo gráfico tenemos el gestor de archivadores para facilitarnos la vida. Pero, ¿cómo tratar con archivos comprimidos o empaquetados como los tgz, tar, bz2 o rar en la consola?

TAR
Se trata de un archivo que combina varios archivos en uno, no hay compresión de datos. Para extraer el contenido usamos el comando tar con los flags x (extract, extraer) y f (file, desde un archivo), y opcionalmente v (verbose) para mostrar por pantalla el proceso o vv para mostrar no solo los archivos y carpetas creadas, sino información sobre estas.

tar xvf archivo.tar

GZ
Se trata de un archivo comprimido con gzip. Para descomprimir utilizamos el comando gzip con el flag -d (descomprimir) o bien el comando gunzip, que no es más que un enlace a gzip.

gunzip archivo.gz
gzip -d archivo.gz

TGZ, TAR.GZ
Un archivo empaquetado con tar y comprimido con gunzip. Se descomprime de la misma forma que los tar, añadiendo el flag z para indicarle que use gzip para descomprimir.

tar xvzf archivo.tar.gz

BZ2
Archivo comprimido con bzip2. Para descomprimir se usa el comando bzip2 con el flag -d (descomprimir) o bien el comando bunzip2, que no es más que un enlace a bzip2.

bunzip2 archivo.bz2
bzip2 -d archivo.bz2

TAR.BZ2
Similar a los archivos tar.gz, pero se usó bzip2 para comprimirlo. Para descomprimir se usa también tar, con el flag j en lugar de z:

tar xvjf archivo.tar.bz2

ZIP
Archivo comprimido con zip. Se descomprime usando el comando unzip:

unzip archivo.zip

RAR
Formato propietario de RarLab, creadores del famoso Winrar. Normalmente el comando rar no está instalado en el sistema

sudo aptitude install rar

Se descomprime con el flag -x (eXtract, extraer)

rar -x archivo.rar

Artículo sobre programación de un "Bong" con SDL

Navegando por la web encontré un artículo bastante interesante que explica cómo programar un “bong” con SDL, implementando un sistema de colisiones.

Enlace: http://acuv.webs.upv.es/index.php?option=com_content&view=article&id=199:tutorial-sdl-hagamos-un-qbongq&catid=8:general&Itemid=12

Primer juego SDL con sistema de colisiones

Amigos, luego de haberme terminado de leer 2 libros sobre programación con SDL 🙂 he creado una especie de librerías que facilitan mucho el trabajo a la hora de programar videojuegos, que nos ayudan a inciar el sistema gráfico más rápido ,y lo mejor es que incorpora un sistema de detección de colisiones que me tomó bastante trabajo hacerlo porque tuve que aplicar geometría a full.

Además, desarrollé un pequeño ejemplo llamado “game” donde muestra cómo una X colisiona contra una pared de ladrillos. Más adelante explicaré el sistema de colisiones.

Acá dejo los fuentes, donde viene el source del juego:

game_collision.tar

csprite.cpp/csprite.h y csurface.cpp/csurface.h y config.h conforman la librería en sí, o sea, son clases sencillas que me permiten simplificar el trabajo.

Antes que nada, para desarrollar un videojuego como este o compilar este mismo necesitas las librerías SDL(Simple DirectMedia Layer) que nos permiten el manejo del video, del audio, del joystick, eventos, étc. Para las distribuciones basadas en Debian puedes instalarlas con un simple “apt-get install libsdl1.2-dev”. La página oficial de estas librerías es www.libsdl.org.

Una vez que descomprimas el archivo y entres a la carpeta tendrás que compilar los sources así:

g++ -o game game.cpp csprite.cpp csurface.cpp `sdl-config --cflags --libs`

El ejemplo que diseñé consta de una X que se puede mover a nuestro antojo a través de la pantalla, de una caja de madera que sólo se puede mover cuando es empujada por la X, y de una pared de ladrillos que está fija, y X no puede traspasarla, ya que topa contra esta.

Si quieres utilizar las “librerías” y necesitas más info, comunicate conmigo a mi mail.

En el próximo artículo explicaré todo lo relacionado con las colisiones de objetos 2D.

 

Categorías:C/C++, Programación

Manual sobre SDL en castellano

Tanto tiempo. Aquí les traigo un manual sobre SDL (Simple DirectMedia Layer), la librería por excelencia para trabajar con multimedia e imágenes, que nos facilitará el trabajo de la programación de videojugos 2D con imágenes.

Este libro enseña los conceptos de una forma “muuy” clara y concisa y además nos enseña cómo programar un simple juego.

Enlace: http://www.scribd.com/doc/8689046/eBookProgramacion-de-Videojuegos-Con-SDL.

Se encuentra alojado en Scribd.com. Este “gran tutorial” nos dará la base suficiente para comenzar a programar nuestr juego desde 0. Yo ahora estoy terminando el mío, en breve lo subiré :).

Compilar Kernel Linux con el método tradicional

Como muchos saben, hay muchas formas de compilar un Kernel de Linux. Cada distribución trae su propio método para hacerlo y sus propias herramientas, como en el caso de Debian que cuenta con las herramientas de “make-kpkg”, y que este tema ya lo explique en un post anterior.

Ahora voy a escribir una pequeña explicación para compilar un kernel con el método tradicional, el más antiguo y el universal,o sea, en todas las distribuciones se compila igual.

Iré paso por paso, antes que nada hay que registrarse como root para realizar todas estas acciones como superusuario y así no tendremos problemas con los privilegios y esas cuestiones.

Paso a paso

1- Primero descargaremos el último kernel disponible en kernel.org: kernel 2.6.39.

2- Lo copiamos en la carpte /usr/src que es donde debe encontrarse el source del kernel y lo descomprimimos:

cp linux-2.6.39.tar.bz2 /usr/src/
tar xfv linux-2.6.39.tar.bz2

Si lo desean pueden crea run enlace simbóligo con “ln -s linux-2.6.39/ linux/” para que les sea más cómodo ingresar a la carpeta, pero yo siempre me salteo est epaso.

3- Entramos en la carpeta /usr/src que es donde está el source del kernel, e ingresamos en la carpeta del source:

cd /usr/src/linux-2.6.39

4- Compilamos lo necesario para empezar a configurar el kernel y los módulos:

make menuconfig

La configuración varía según el hardware que tenga nuestra PC, por eso no puedo especificar nada sobre este punto ya que todas las PCs cuentan con dispositivos diferentes. Informate bien sobre tu hardware para poder configurar el kernel en relación a los dispositivos con que dispongas. Si lo deseas puedes activar todo (o la mayoría) para tener compatibilidad con todo, aunque no es nada recomendable porque te quedará un kernel inmenso. Lo que puedes hacer es usar la configuración del kernel con el que estás trabajando actualmente accediendo a /boot y copiando .config a la carpeta que contiene el source del kernel.

5- Una vez terminemos de configurarlo sólo nos queda compilarlo, instalar, compilar los módulos e instalarlos:

make
make modules
make modules_install
make install

6- Ya tendriamos todo listo. Solo queda configurar tu boot para que reconozca la imagen del kernel. Si estás usando grub debes crear la iamgen con mkinitramfs:

mkinitramfs -o /boot/initrd-2.6.39 .img /lib/modules/2.6.39
mkinitramfs -o /boot/initrd.img-2.6.39 /lib/modules/2.6.39

7- Solo tienes que actualizar grub para que te reconozca la imagen y listo:

update-grub

 

Ya tienes tu kernel funcionando perfectamente. En proximos artículos entrará más de lleno en lo que es la configuración del kernel.

Hasta luego.