TutorialSDL-30012008.pdf

(13736 KB) Pobierz
738195134 UNPDF
Tutorial de libSDL para la programaci ó n de
videojuegos
Antonio Garc í a Alba
19 de enero de 2008
2
738195134.004.png
 
˝ndice general
1.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. ¾ QuØ necesitamos? . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3.2. Herramientas para el desarrollo . . . . . . . . . . . . . . 3
1.3.3. Conocimientos previos . . . . . . . . . . . . . . . . . . . 6
1.3.5. Diseæo multimedia . . . . . . . . . . . . . . . . . . . . . 9
1.4. Anatom í a de un Videojuego . . . . . . . . . . . . . . . . . . . . 10
1.4.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.2. Estructura de un videojuego . . . . . . . . . . . . . . . . 11
1.6. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3. ¾ QuØ es libSDL? . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4. ¾ QuØ nos proporiciona SDL? . . . . . . . . . . . . . . . . . . . . 24
2.4.1. V í deo y GrÆ cos . . . . . . . . . . . . . . . . . . . . . . 24
2.4.2. Eventos de Entrada . . . . . . . . . . . . . . . . . . . . . 25
2.4.3. Sonido . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.4. Manejo del CDROM . . . . . . . . . . . . . . . . . . . . 26
2.4.5. Timers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.6. Gesti ó n de dispositivos . . . . . . . . . . . . . . . . . . . 26
2.4.7. Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5. ¾ Por quØ SDL? . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6. Desventajas de SDL . . . . . . . . . . . . . . . . . . . . . . . . 34
2.7. El futuro de SDL . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.8. Recopilando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
i
738195134.005.png
˝NDICE GENERAL
3.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3. Instalando SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.1. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.2. Instalaci ó n . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4. Instalando las librer í as adicionales . . . . . . . . . . . . . . . . . 39
3.6. Probando la instalaci ó n . . . . . . . . . . . . . . . . . . . . . . . 40
3.7. Recopilando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3. El entorno de desarrollo . . . . . . . . . . . . . . . . . . . . . . 43
4.4. SDL y los subsistemas . . . . . . . . . . . . . . . . . . . . . . . 44
4.5. Compilando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.5.1. La herramienta sdl-con g . . . . . . . . . . . . . . . . . 47
4.7. SDL_GetError() y SDL_WasInit() . . . . . . . . . . . . . . . . 49
4.8. Inicializaci ó n y Finalizaci ó n de SDL . . . . . . . . . . . . . . . . 51
4.9. Hola Mundo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.10. Trabajando con las librer í as adicionales . . . . . . . . . . . . . . 58
4.10.1. SDL_image . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.10.2. SDL_ttf . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.10.3. SDL_mixer . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.10.4. SDL_net . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.11. Recopilando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3. Conocimientos Previos . . . . . . . . . . . . . . . . . . . . . . . 65
5.4. Subsistema de V í deo . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4.1.1. Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . 72
5.4.2.1. Ejemplo 2 . . . . . . . . . . . . . . . . . . . . . 79
5.5. Conceptos y Estructuras Fundamentales . . . . . . . . . . . . . 84
5.5.1. SDL_Rect. El `rea RectÆngular . . . . . . . . . . . . . 84
5.5.2. SDL_Color. El color en SDL. . . . . . . . . . . . . . . . 89
5.5.3. SDL_Palette, La Paleta de Colores . . . . . . . . . . . . 91
5.5.4. SDL_PixelFormat. Formato de P í xel . . . . . . . . . . . 94
5.5.5. SDL_Surface, La Super ce . . . . . . . . . . . . . . . . 98
5.5.6. SDL_Overlay . . . . . . . . . . . . . . . . . . . . . . . . 102
ii
738195134.006.png 738195134.001.png
˝NDICE GENERAL
5.5.6.1. Creando un Overlay . . . . . . . . . . . . . . . 103
5.5.6.2. Destruyendo el Overlay . . . . . . . . . . . . . 103
5.5.6.4. Dibujando un Overlay . . . . . . . . . . . . . . 104
5.5.7. Blitting . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
5.5.8. El Flipping y el Doble Bœ er . . . . . . . . . . . . . . . 106
5.6. Manejando Super cies . . . . . . . . . . . . . . . . . . . . . . . 108
5.6.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . 108
5.6.2. Modi cando la super cie . . . . . . . . . . . . . . . . . . 108
5.6.3. Primitivas GrÆ cas . . . . . . . . . . . . . . . . . . . . . 117
5.6.4. Ejercicio 1. La recta . . . . . . . . . . . . . . . . . . . . 117
5.6.5. Ejercicio 2. El cuadrado . . . . . . . . . . . . . . . . . . 119
5.6.6. Ejercicio 3. La circunferencia . . . . . . . . . . . . . . . . 120
5.7. Cargando Mapas de Bits . . . . . . . . . . . . . . . . . . . . . . 123
5.7.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . 123
5.7.2. ¾ C ó mo cargar un mapa de bits? . . . . . . . . . . . . . . 123
5.7.3. Ejercicio 4 . . . . . . . . . . . . . . . . . . . . . . . . . . 130
5.8. Transparencias . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.8.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . 134
5.8.2. ¾ Para quØ un color clave? . . . . . . . . . . . . . . . . . 135
5.8.3. Color Key . . . . . . . . . . . . . . . . . . . . . . . . . . 137
5.8.4. Ejemplo 5. Aplicando el color clave . . . . . . . . . . . . 139
5.8.5. Ejercicio 5 . . . . . . . . . . . . . . . . . . . . . . . . . . 140
5.8.6. El Canal Alpha . . . . . . . . . . . . . . . . . . . . . . . 143
5.8.6.1. Ejemplo 6 . . . . . . . . . . . . . . . . . . . . . 144
5.9. Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
5.9.1. Ejemplo 7 . . . . . . . . . . . . . . . . . . . . . . . . . . 147
5.10. Conversi ó n de Formatos de P í xel . . . . . . . . . . . . . . . . . 149
5.11. Recopilando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
6.1. Introducci ó n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
6.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.3. Conocimientos previos . . . . . . . . . . . . . . . . . . . . . . . 154
6.4. Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
6.5. Captura de eventos . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.5.1. Waiting . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
6.5.3. Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
6.5.4. ¾ CuÆl es la mejor opci ó n? . . . . . . . . . . . . . . . . . 162
6.6. SDL_Event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
6.6.1. Ejemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 164
6.7. Tipos de Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . 167
6.8. Teclado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
iii
738195134.002.png 738195134.003.png
Zgłoś jeśli naruszono regulamin