10.07.2015 Views

[ebook]Programacion de videojuegos con SDL

[ebook]Programacion de videojuegos con SDL

[ebook]Programacion de videojuegos con SDL

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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 Lvoid <strong>SDL</strong>_FreeSurface(<strong>SDL</strong>_Surface *surface);La misión <strong>de</strong> las siguientes líneas es esperar la pulsación <strong>de</strong> una tecla cualquieraantes <strong>de</strong> acabar. Veremos más en profundidad su significado cuando tratemos loseventos.Efectos especiales: Transparencias y alpha-blendingEl hecho <strong>de</strong> que seamos capaces <strong>de</strong> mostrar el grafico <strong>de</strong> un avión en la pantalla es unpaso importante, pero seamos realistas: no es <strong>de</strong>masiado espectacular. De hecho, eserecuadro rojo alre<strong>de</strong>dor <strong>de</strong>l avión es bastante antiestético ¿no? Ciertamente sí. Alguien pue<strong>de</strong>haber ya pensado en una solución (salomónica, me atrevería a apuntar), que es hacer queese horrible recuadro rojo sea <strong>de</strong> color negro, al igual que el fondo. Realmente es unasolución, si te gustan los juegos <strong>con</strong> fondos <strong>de</strong> pantalla algo monótonos. Como siempre <strong>SDL</strong>viene al rescate. Echemos un vistazo a la siguiente función:int <strong>SDL</strong>_SetColorKey(<strong>SDL</strong>_Surface *surface, Uint32 flag, Uint32 key);Esta función nos permite <strong>de</strong>signar un color en la superficie, que pasamos como parámetro,y que tendrá el comportamiento <strong>de</strong> un color transparente. Es <strong>de</strong>cir, que no se pintará cuandohagamos el blitting. La función nos <strong>de</strong>vuelve 0 si todo fue bién y –1 en otro caso. El parámetroflag sólo pue<strong>de</strong> tomar tres valores posibles:• 0 para <strong>de</strong>sactivar una transparencia previamente activada.• <strong>SDL</strong>_SRCCOLORKEY para indicar que el tercer parámetro <strong>de</strong> la función correspon<strong>de</strong> alcolor que queremos que sea transparente y• <strong>SDL</strong>_RLEACCEL que permite usar codificación RLE en la superficie para acelerar elblitting.•Este último flag sólo pue<strong>de</strong> usarse en combinación <strong>con</strong> <strong>SDL</strong>_SRCCOLORKEY, es <strong>de</strong>cir, sólose permiten tres valores posibles: 0, <strong>SDL</strong>_SRCCOLORKEY, <strong>SDL</strong>_SRCCOLORKEY|<strong>SDL</strong>_RLEACCEL.El tercer parámetro es el color, que queremos que sea transparente. Hay que tener encuenta que el color ha <strong>de</strong> estar en el mismo formato <strong>de</strong> píxel (píxel format) que la superficie.Lo habitual es utilizar la función <strong>SDL</strong>_MapRGB para <strong>con</strong>seguir el valor <strong>de</strong>l color que buscamos.Veamos un ejemplo:<strong>SDL</strong>_SetColorKey(image, <strong>SDL</strong>_SRCCOLORKEY|<strong>SDL</strong>_RLEACCEL, <strong>SDL</strong>_MapRGB(image->format,255,0,0));Aña<strong>de</strong> esta línea al ejemplo anterior <strong>de</strong>spués <strong>de</strong> la carga <strong>de</strong>l gráfico. Si ejecutas ahora elprograma veras el avión sin ese feo marco rojo alre<strong>de</strong>dor.32

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!