[ebook]Programacion de videojuegos con SDL
[ebook]Programacion de videojuegos con SDL
[ebook]Programacion de videojuegos con SDL
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
P R O G R A M A C I Ó N D E V I D E O J U E G O S C O N S D LEl Window ManagerUn window manager o gestor <strong>de</strong> ventanas es un programa que nos permite ejecutaraplicaciones <strong>de</strong>ntro <strong>de</strong> ventanas, realizar acciones como cortar y pegar entreaplicaciones, mover y cambiar el tamaño <strong>de</strong> las ventanas, etc... En el caso <strong>de</strong> Windows,el gestor <strong>de</strong> ventanas forma parte <strong>de</strong>l propio sistema operativo. En otros entornos, comoLinux, po<strong>de</strong>mos trabajar <strong>con</strong> el gestor <strong>de</strong> ventanas que más nos guste, como KDE oGnome por nombrar los dos más <strong>con</strong>ocidos. Habrás notado que todas las aplicacionesque hemos realizado hasta ahora, al ejecutarse mostraban el nombre <strong>SDL</strong>_app en laventana. Este es el nombre por <strong>de</strong>fecto. Po<strong>de</strong>mos cambiar este nombre mediante lasiguiente función:void <strong>SDL</strong>_WM_SetCaption(<strong>con</strong>st char *title, <strong>con</strong>st char *i<strong>con</strong>);Don<strong>de</strong> el primer parámetro es el título <strong>de</strong> la aplicación y el segundo el nombre <strong>de</strong>licóno. En Windows este segundo parámetro no se utiliza. Po<strong>de</strong>mos <strong>con</strong>ocer los valoresactuales <strong>con</strong> la siguiente función.void <strong>SDL</strong>_WM_GetCaption(char **title, char **i<strong>con</strong>);Para cambiar el i<strong>con</strong>o <strong>de</strong> la aplicación po<strong>de</strong>mos utilizar la funciónvoid <strong>SDL</strong>_WM_SetI<strong>con</strong>(<strong>SDL</strong>_Surface *i<strong>con</strong>, Uint8 *mask);El primer parámetro es una surface que <strong>con</strong>tiene el icóno. En Windows este icóno ha<strong>de</strong> tener una resolución <strong>de</strong> 32x32 píxeles. El segundo parámetro es un puntero a un array<strong>con</strong>teniendo la máscara <strong>de</strong> bits para el icóno (esto es usado para <strong>de</strong>finir la forma <strong>de</strong>licóno y sus partes transparentes). Si como valor pasamos NULL, las transparenciasestarán <strong>de</strong>finias por el color key <strong>de</strong> la superficie. Veamos un ejemplo simple:<strong>SDL</strong>_WM_SetI<strong>con</strong>(<strong>SDL</strong>_LoadBMP("i<strong>con</strong>.bmp"), NULL);Si queremos minimizar la aplicación mientras se ejecuta, usaremos la funciónint <strong>SDL</strong>_WM_I<strong>con</strong>ifyWindow(void);Si no se pudo minimizar la aplicación, esta función <strong>de</strong>volverá el valor 0.TimmingVamos a terminar esta introducción a <strong>SDL</strong> <strong>con</strong> el <strong>con</strong>trol <strong>de</strong> tiempo. Dejamos sin tratar todolo referido a multitarea y programación <strong>de</strong> hilos. Hay que saber bién lo que se está haciendo ytener, al menos, unos sólidos <strong>con</strong>ocimientos sobre multitarea y sistemas operativos para sacarprovecho a esta capacidad <strong>de</strong> <strong>SDL</strong>. Afortunadamente, no nos va a ser necesaria para crearvi<strong>de</strong>ojuegos.Lo que si nos va a hacer falta es po<strong>de</strong>r <strong>con</strong>trolar el tiempo. Es una taréa esencial, ya queno todos los or<strong>de</strong>nadores funcionan a la misma velocidad. Si no <strong>con</strong>trolaramos el tiempo,nuestro juego funcionaría bien en algunos or<strong>de</strong>nadores, pero en otros (los más rápidos) iría auna velocidad endiablada. Vamos <strong>con</strong> la primera función.Uint32 <strong>SDL</strong>_GetTicks(void);60