SlideShare una empresa de Scribd logo
1 de 29
Programación de Videojuegos Por Gorka Suárez
Apartados del curso ,[object Object],[object Object]
Conceptos teóricos ,[object Object],[object Object],[object Object],[object Object]
Organización de un videojuego Inicialización del programa Finalización del programa Bucle principal Núcleo de datos del videojuego Cargar datos Libera los datos
Inicialización del programa ,[object Object],[object Object],[object Object]
Bucle principal ,[object Object],[object Object],Rutina de pintado Rutina de la lógica Núcleo de datos Leer datos Leer datos Modificar datos
Código de ejemplo void BuclePrincipal (tNucleo * Nucleo) { Uint32 Intervalo = 0; Uint32 TiempoAnt = 0; do { //Tomamos el tiempo de inicio TiempoAnt = DarTicks(); //Pintamos la pantalla PintarPantalla(Nucleo); //Calculamos cuanto tiempo ha tardado Intervalo = DarTicks() - TiempoAnt; //Y ejecutamos la lógica en base al tiempo transcurrido EjecutarLogica(Nucleo, Intervalo); } while (Nucleo->Partida.EstadoDelJuego != ESTSAL); }
La sección de pintado ,[object Object],[object Object],[object Object],[object Object]
La sección de la lógica ,[object Object],[object Object],[object Object]
Introducción a la SDL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
¿Qué es la SDL? La SDL es una API multiplataforma, que se puede emplear para el desarrollo de programas que requieran manejo multimedia (gráficos, sonido, entrada, cd-rom, etc...) Creada por Sam Lantinga, para portar juegos como Civilization Call to Power, de windows a linux. Se puede encontrar en  http://www.libsdl.org/
Funciones   para la inicialización ,[object Object],[object Object],[object Object],[object Object]
SDL_Init int  SDL_Init  (Uint32 flags); Inicializa la API SDL. Devuelve -1 en caso de que exista algún error. Su argumento flags sirve para indicar los sistemas que deseamos activar (encadenados con el operador | ): SDL_INIT_VIDEO = Sistema que controla el tema de los gráficos. SDL_INIT_AUDIO = Sistema que controla el tema del audio. SDL_INIT_TIMER = Sistema para el control del tiempo. SDL_INIT_EVERYTHING = Para inicializarlo todo.
SDL_VideoModeOK int  SDL_VideoModeOK  (int width, int height, int bpp, Uint32 flags); Comprueba si está soportado el modo de video indicado por el usuario, en la tarjeta de video del ordenador. Si no está soportado dicho modo de video, nos devolverá 0, en cualquier otro caso nos devolverá la profundidad máxima soportada por el modo de video indicado. Sus parametros son: width = Ancho de la resolución de la pantalla. height = Alto de la resolución de la pantalla. bpp = Numero de bits de profundidad para el color (8, 16, 24, 32). flags = Propiedades que va a tener el buffer principal de la pantalla.
SDL_SetVideoMode SDL_Surface *  SDL_SetVideoMode  (int width, int height, int bpp, Uint32 flags); Activa el modo de video que le indiquemos. Nos devolverá NULL en caso de error, o la dirección de memoria donde se encuentra el buffer principal de la pantalla. Los flags que podemos usar son: + SDL_SWSURFACE: Que use la memoria RAM normal. + SDL_HWSURFACE: Que use la memoria RAM de la tarjeta de video. + SDL_DOUBLEBUF: Que use doble buffering. + SDL_FULLSCREEN: Que la aplicación sea a pantalla completa.
SDL_Quit void  SDL_Quit  (void); Finaliza todos los sistemas que se habían activado de la SDL. Se tiene que llamar siempre que se vaya a salir del programa, para desactivar la SDL.
¿Qué son las “SDL_Surface”? Son regiones de memoria (buffers), donde se almacenan imágenes. Al cambiar el modo de video, se nos devuelve una región que usará la tarjeta de video, para pintar la pantalla con su información. ¿Qué es el Doble Buffering? Consiste en una técnica de tener dos buffers para la pantalla, en uno pintamos la escena actual, y del otro la tarjeta de video lee el contenido para pintarlo en la pantalla. Cuando tenemos la escena terminada de pintar, damos el buffer que acabamos de usar a la tarjeta, y tomamos el que acaba de dejar libre, para pintar la nueva escena.
Funciones para manejar imágenes ,[object Object],[object Object],[object Object],[object Object],[object Object]
SDL_LoadBMP SDL_Surface *  SDL_LoadBMP  (const char * ruta); Carga en una surface, un fichero bmp indicado en el parametro ruta.
SDL_SetColorKey int  SDL_SetColorKey  (SDL_Surface * surface, Uint32 flag, Uint32 key); Añade o modifica el color clave para la transparencia de la surface que le pasemos como argumento. “flag” suele valer siempre SDL_SRCCOLORKEY, y “key” es el color que va a actuar como color transparente.
SDL_FreeSurface void  SDL_FreeSurface  (SDL_Surface * surface); Libera el espacio ocupado en memoria por la surface que le indiquemos.
SDL_BlitSurface int  SDL_BlitSurface  (SDL_Surface * src, SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect); Copia en la región “dstrect”, de la surface “dst”, la región “srcrect”, de la surface “src”. En caso de error devuelve -1. src dst srcrect dstrect SDL_Rect: + x = Coordenada x. + y = Coordenada y. + w = Ancho del area. + h = Alto del area. Copiar de src a dst
SDL_Flip int  SDL_Flip  (SDL_Surface * buffPantalla); Intercambia los buffers cuando empleamos la técnica de doble buffering, actualizando así el contenido de la pantalla.
Funciones para la entrada ,[object Object],[object Object],[object Object],[object Object]
SDL_PumpEvents void  SDL_PumpEvents  (void); Actualiza el estado completo de la entrada por teclado y ratón.
SDL_GetKeyState UInt8 *  SDL_GetKeyState  (int * numKeys); Nos da un puntero a la región de memoria, donde SDL tiene almacenado el estado de las teclas del teclado. numKeys normalmente valdrá NULL, para que podamos acceder a todas las teclas. Ejemplo: UInt8 * teclas = SDL_GetKeyState (NULL); if(teclas[SDLK_ESCAPE] == 1) printf(“Ha pulsado escape...”);
SDL_GetMouseState UInt8  SDL_GetMouseState  (int * x, int * y); Da las coordenadas (x, y) actuales del ratón. Devolviendo el estado de los botones del ratón. Que se puede comprobar haciendo lo siguiente: UInt8 Botones = SDL_GetMouseState (&x, &y); ((Botones & SDL_BUTTON(SDL_BUTTON_?)) == 1)  -> Indica si está pulsado un botón o no. Los diferentes botones que hay son:  SDL_BUTTON_LEFT ,  SDL_BUTTON_MIDDLE ,  SDL_BUTTON_RIGHT, SDL_BUTTON_WHEELUP, SDL_BUTTON_WHEELDOWN .
SDL_GetRelativeMouseState UInt8  SDL_GetRelativeMouseState  (int * rx, int * ry); Da las coordenadas relativas (x, y) actuales del ratón.
Como compilar bajo linux Para compilar bajo linux no hace falta realmente mucho trabajo. Tan solo hacernos el fichero makefile, y cuando vayamos a llamar al compilador para generar el ejecutable, enlazando todos los ficheros objeto, hemos de añadir lo siguiente: `sdl-config --cflags --libs` Como ejemplo, en el caso de que solo tuvieramos un fichero fuente, el comando quedaría tal que: gcc `sdl-config --cflags --libs` -o prueba prueba.c

Más contenido relacionado

La actualidad más candente (17)

Manual Scratch para Robótica
Manual Scratch para RobóticaManual Scratch para Robótica
Manual Scratch para Robótica
 
Intro PyGame Capitulo 1
Intro PyGame Capitulo 1Intro PyGame Capitulo 1
Intro PyGame Capitulo 1
 
Nintendo ds
Nintendo dsNintendo ds
Nintendo ds
 
Programación con Pygame VIII
Programación con Pygame VIIIProgramación con Pygame VIII
Programación con Pygame VIII
 
Trabajo de programacion grafica
Trabajo de programacion graficaTrabajo de programacion grafica
Trabajo de programacion grafica
 
Taller con Lego Mindstorms
Taller con Lego MindstormsTaller con Lego Mindstorms
Taller con Lego Mindstorms
 
Unidad educativa
Unidad educativaUnidad educativa
Unidad educativa
 
Practicas OpenglC++
Practicas OpenglC++Practicas OpenglC++
Practicas OpenglC++
 
Lego mindstorms
Lego mindstormsLego mindstorms
Lego mindstorms
 
Nombre del componente
Nombre del componenteNombre del componente
Nombre del componente
 
Software lego mindstorm nxt
Software lego mindstorm nxtSoftware lego mindstorm nxt
Software lego mindstorm nxt
 
Programación con Pygame IX
Programación con Pygame IXProgramación con Pygame IX
Programación con Pygame IX
 
Xo secundaria lap top azules
Xo secundaria lap top azulesXo secundaria lap top azules
Xo secundaria lap top azules
 
Tutorial unity3d 1_español
Tutorial unity3d 1_españolTutorial unity3d 1_español
Tutorial unity3d 1_español
 
Programación con Pygame VI
Programación con Pygame VIProgramación con Pygame VI
Programación con Pygame VI
 
Programa voz
Programa vozPrograma voz
Programa voz
 
Guia de infor 4dhfg
Guia de infor 4dhfgGuia de infor 4dhfg
Guia de infor 4dhfg
 

Destacado

Los Virus
Los VirusLos Virus
Los Virusagustin
 
Animación por Ordenador
Animación por OrdenadorAnimación por Ordenador
Animación por Ordenadoragustin
 
Gráficos en los videojuegos
Gráficos en los videojuegosGráficos en los videojuegos
Gráficos en los videojuegosagustin
 
Aplicación de escritorio con java
Aplicación de escritorio con javaAplicación de escritorio con java
Aplicación de escritorio con javaEmerson Garay
 
Base de datos con Netbeans
Base de datos con NetbeansBase de datos con Netbeans
Base de datos con NetbeansRandy
 
Funciones subrutinas y procedimientos
Funciones subrutinas y procedimientosFunciones subrutinas y procedimientos
Funciones subrutinas y procedimientosjnarchie
 
Desarrollar aplicación completa en Java con conexión base de datos MySql
Desarrollar aplicación completa en Java con conexión base de datos MySqlDesarrollar aplicación completa en Java con conexión base de datos MySql
Desarrollar aplicación completa en Java con conexión base de datos MySqlJavashi
 
Data Mining. Extracción de Conocimiento en Grandes Bases de Datos
Data Mining. Extracción de Conocimiento en Grandes Bases de DatosData Mining. Extracción de Conocimiento en Grandes Bases de Datos
Data Mining. Extracción de Conocimiento en Grandes Bases de DatosRoberto Espinosa
 
Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)Felipe Duarte Camacho
 
Java y Bases de Datos
Java y Bases de DatosJava y Bases de Datos
Java y Bases de DatosRonny Parra
 
Programación de Videojuegos en GNU/Linux
Programación de Videojuegos en GNU/LinuxProgramación de Videojuegos en GNU/Linux
Programación de Videojuegos en GNU/LinuxJavi Pacheco
 

Destacado (12)

Los Virus
Los VirusLos Virus
Los Virus
 
Animación por Ordenador
Animación por OrdenadorAnimación por Ordenador
Animación por Ordenador
 
Gráficos en los videojuegos
Gráficos en los videojuegosGráficos en los videojuegos
Gráficos en los videojuegos
 
Aplicación de escritorio con java
Aplicación de escritorio con javaAplicación de escritorio con java
Aplicación de escritorio con java
 
Base de datos con Netbeans
Base de datos con NetbeansBase de datos con Netbeans
Base de datos con Netbeans
 
Funciones subrutinas y procedimientos
Funciones subrutinas y procedimientosFunciones subrutinas y procedimientos
Funciones subrutinas y procedimientos
 
Desarrollar aplicación completa en Java con conexión base de datos MySql
Desarrollar aplicación completa en Java con conexión base de datos MySqlDesarrollar aplicación completa en Java con conexión base de datos MySql
Desarrollar aplicación completa en Java con conexión base de datos MySql
 
Data Mining. Extracción de Conocimiento en Grandes Bases de Datos
Data Mining. Extracción de Conocimiento en Grandes Bases de DatosData Mining. Extracción de Conocimiento en Grandes Bases de Datos
Data Mining. Extracción de Conocimiento en Grandes Bases de Datos
 
Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)Bases de datos (Ejemplo del videoclub)
Bases de datos (Ejemplo del videoclub)
 
Curso basico de base de datos con java
Curso basico de base de datos con javaCurso basico de base de datos con java
Curso basico de base de datos con java
 
Java y Bases de Datos
Java y Bases de DatosJava y Bases de Datos
Java y Bases de Datos
 
Programación de Videojuegos en GNU/Linux
Programación de Videojuegos en GNU/LinuxProgramación de Videojuegos en GNU/Linux
Programación de Videojuegos en GNU/Linux
 

Similar a Taller programación videojuegos

Similar a Taller programación videojuegos (20)

Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de Arduino
 
capacitación laptop XO 1.5 por area Prof Hozmara Torres, Oscar Bendezu y Jean...
capacitación laptop XO 1.5 por area Prof Hozmara Torres, Oscar Bendezu y Jean...capacitación laptop XO 1.5 por area Prof Hozmara Torres, Oscar Bendezu y Jean...
capacitación laptop XO 1.5 por area Prof Hozmara Torres, Oscar Bendezu y Jean...
 
Programación básica de Arduino
Programación básica de Arduino Programación básica de Arduino
Programación básica de Arduino
 
Arduino 1
Arduino 1Arduino 1
Arduino 1
 
7 curso
7 curso7 curso
7 curso
 
Arduino
ArduinoArduino
Arduino
 
PDF OP DE KRISTI
PDF OP DE KRISTIPDF OP DE KRISTI
PDF OP DE KRISTI
 
Arduino
ArduinoArduino
Arduino
 
Arduino
ArduinoArduino
Arduino
 
Arduino
ArduinoArduino
Arduino
 
Manual de Arduino
Manual de ArduinoManual de Arduino
Manual de Arduino
 
Look and feel java
Look and feel javaLook and feel java
Look and feel java
 
Tareas SesióN 2ª
Tareas SesióN 2ªTareas SesióN 2ª
Tareas SesióN 2ª
 
Tareas SesióN 2ª
Tareas SesióN 2ªTareas SesióN 2ª
Tareas SesióN 2ª
 
1234567890
12345678901234567890
1234567890
 
Desarrollar juegos para Iphone e Ipad con Cocos2D
Desarrollar juegos para Iphone e Ipad con Cocos2DDesarrollar juegos para Iphone e Ipad con Cocos2D
Desarrollar juegos para Iphone e Ipad con Cocos2D
 
Arduino
ArduinoArduino
Arduino
 
Unid 1
Unid 1Unid 1
Unid 1
 
Autocad
AutocadAutocad
Autocad
 

Más de GUEIM

App Store - Jornadas MDV-GUEIM 2011
App Store - Jornadas MDV-GUEIM 2011App Store - Jornadas MDV-GUEIM 2011
App Store - Jornadas MDV-GUEIM 2011GUEIM
 
¿Que falló en Playstation 3?
¿Que falló en Playstation 3?¿Que falló en Playstation 3?
¿Que falló en Playstation 3?GUEIM
 
Videojuegos y prensa
Videojuegos y prensaVideojuegos y prensa
Videojuegos y prensaGUEIM
 
Quiero hacer videojuegos
Quiero hacer videojuegosQuiero hacer videojuegos
Quiero hacer videojuegosGUEIM
 
Lineage 2
Lineage 2Lineage 2
Lineage 2GUEIM
 
Casual games
Casual gamesCasual games
Casual gamesGUEIM
 
Arte y videojuegos
Arte y videojuegosArte y videojuegos
Arte y videojuegosGUEIM
 
Neverwinter nights
Neverwinter nightsNeverwinter nights
Neverwinter nightsGUEIM
 
Brett spielwelt
Brett spielweltBrett spielwelt
Brett spielweltGUEIM
 
Prince of persia
Prince of persiaPrince of persia
Prince of persiaGUEIM
 
World of warcraft 2005
World of warcraft 2005World of warcraft 2005
World of warcraft 2005GUEIM
 
Metal gear solid
Metal gear solidMetal gear solid
Metal gear solidGUEIM
 
Halo
HaloHalo
HaloGUEIM
 
Psp vs ds
Psp vs dsPsp vs ds
Psp vs dsGUEIM
 
Myst
MystMyst
MystGUEIM
 
Survival horror
Survival horrorSurvival horror
Survival horrorGUEIM
 
Scrapland
ScraplandScrapland
ScraplandGUEIM
 
Monkey island
Monkey islandMonkey island
Monkey islandGUEIM
 
Max payne
Max payneMax payne
Max payneGUEIM
 
Final fantasy
Final fantasyFinal fantasy
Final fantasyGUEIM
 

Más de GUEIM (20)

App Store - Jornadas MDV-GUEIM 2011
App Store - Jornadas MDV-GUEIM 2011App Store - Jornadas MDV-GUEIM 2011
App Store - Jornadas MDV-GUEIM 2011
 
¿Que falló en Playstation 3?
¿Que falló en Playstation 3?¿Que falló en Playstation 3?
¿Que falló en Playstation 3?
 
Videojuegos y prensa
Videojuegos y prensaVideojuegos y prensa
Videojuegos y prensa
 
Quiero hacer videojuegos
Quiero hacer videojuegosQuiero hacer videojuegos
Quiero hacer videojuegos
 
Lineage 2
Lineage 2Lineage 2
Lineage 2
 
Casual games
Casual gamesCasual games
Casual games
 
Arte y videojuegos
Arte y videojuegosArte y videojuegos
Arte y videojuegos
 
Neverwinter nights
Neverwinter nightsNeverwinter nights
Neverwinter nights
 
Brett spielwelt
Brett spielweltBrett spielwelt
Brett spielwelt
 
Prince of persia
Prince of persiaPrince of persia
Prince of persia
 
World of warcraft 2005
World of warcraft 2005World of warcraft 2005
World of warcraft 2005
 
Metal gear solid
Metal gear solidMetal gear solid
Metal gear solid
 
Halo
HaloHalo
Halo
 
Psp vs ds
Psp vs dsPsp vs ds
Psp vs ds
 
Myst
MystMyst
Myst
 
Survival horror
Survival horrorSurvival horror
Survival horror
 
Scrapland
ScraplandScrapland
Scrapland
 
Monkey island
Monkey islandMonkey island
Monkey island
 
Max payne
Max payneMax payne
Max payne
 
Final fantasy
Final fantasyFinal fantasy
Final fantasy
 

Taller programación videojuegos

  • 1. Programación de Videojuegos Por Gorka Suárez
  • 2.
  • 3.
  • 4. Organización de un videojuego Inicialización del programa Finalización del programa Bucle principal Núcleo de datos del videojuego Cargar datos Libera los datos
  • 5.
  • 6.
  • 7. Código de ejemplo void BuclePrincipal (tNucleo * Nucleo) { Uint32 Intervalo = 0; Uint32 TiempoAnt = 0; do { //Tomamos el tiempo de inicio TiempoAnt = DarTicks(); //Pintamos la pantalla PintarPantalla(Nucleo); //Calculamos cuanto tiempo ha tardado Intervalo = DarTicks() - TiempoAnt; //Y ejecutamos la lógica en base al tiempo transcurrido EjecutarLogica(Nucleo, Intervalo); } while (Nucleo->Partida.EstadoDelJuego != ESTSAL); }
  • 8.
  • 9.
  • 10.
  • 11. ¿Qué es la SDL? La SDL es una API multiplataforma, que se puede emplear para el desarrollo de programas que requieran manejo multimedia (gráficos, sonido, entrada, cd-rom, etc...) Creada por Sam Lantinga, para portar juegos como Civilization Call to Power, de windows a linux. Se puede encontrar en http://www.libsdl.org/
  • 12.
  • 13. SDL_Init int SDL_Init (Uint32 flags); Inicializa la API SDL. Devuelve -1 en caso de que exista algún error. Su argumento flags sirve para indicar los sistemas que deseamos activar (encadenados con el operador | ): SDL_INIT_VIDEO = Sistema que controla el tema de los gráficos. SDL_INIT_AUDIO = Sistema que controla el tema del audio. SDL_INIT_TIMER = Sistema para el control del tiempo. SDL_INIT_EVERYTHING = Para inicializarlo todo.
  • 14. SDL_VideoModeOK int SDL_VideoModeOK (int width, int height, int bpp, Uint32 flags); Comprueba si está soportado el modo de video indicado por el usuario, en la tarjeta de video del ordenador. Si no está soportado dicho modo de video, nos devolverá 0, en cualquier otro caso nos devolverá la profundidad máxima soportada por el modo de video indicado. Sus parametros son: width = Ancho de la resolución de la pantalla. height = Alto de la resolución de la pantalla. bpp = Numero de bits de profundidad para el color (8, 16, 24, 32). flags = Propiedades que va a tener el buffer principal de la pantalla.
  • 15. SDL_SetVideoMode SDL_Surface * SDL_SetVideoMode (int width, int height, int bpp, Uint32 flags); Activa el modo de video que le indiquemos. Nos devolverá NULL en caso de error, o la dirección de memoria donde se encuentra el buffer principal de la pantalla. Los flags que podemos usar son: + SDL_SWSURFACE: Que use la memoria RAM normal. + SDL_HWSURFACE: Que use la memoria RAM de la tarjeta de video. + SDL_DOUBLEBUF: Que use doble buffering. + SDL_FULLSCREEN: Que la aplicación sea a pantalla completa.
  • 16. SDL_Quit void SDL_Quit (void); Finaliza todos los sistemas que se habían activado de la SDL. Se tiene que llamar siempre que se vaya a salir del programa, para desactivar la SDL.
  • 17. ¿Qué son las “SDL_Surface”? Son regiones de memoria (buffers), donde se almacenan imágenes. Al cambiar el modo de video, se nos devuelve una región que usará la tarjeta de video, para pintar la pantalla con su información. ¿Qué es el Doble Buffering? Consiste en una técnica de tener dos buffers para la pantalla, en uno pintamos la escena actual, y del otro la tarjeta de video lee el contenido para pintarlo en la pantalla. Cuando tenemos la escena terminada de pintar, damos el buffer que acabamos de usar a la tarjeta, y tomamos el que acaba de dejar libre, para pintar la nueva escena.
  • 18.
  • 19. SDL_LoadBMP SDL_Surface * SDL_LoadBMP (const char * ruta); Carga en una surface, un fichero bmp indicado en el parametro ruta.
  • 20. SDL_SetColorKey int SDL_SetColorKey (SDL_Surface * surface, Uint32 flag, Uint32 key); Añade o modifica el color clave para la transparencia de la surface que le pasemos como argumento. “flag” suele valer siempre SDL_SRCCOLORKEY, y “key” es el color que va a actuar como color transparente.
  • 21. SDL_FreeSurface void SDL_FreeSurface (SDL_Surface * surface); Libera el espacio ocupado en memoria por la surface que le indiquemos.
  • 22. SDL_BlitSurface int SDL_BlitSurface (SDL_Surface * src, SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect); Copia en la región “dstrect”, de la surface “dst”, la región “srcrect”, de la surface “src”. En caso de error devuelve -1. src dst srcrect dstrect SDL_Rect: + x = Coordenada x. + y = Coordenada y. + w = Ancho del area. + h = Alto del area. Copiar de src a dst
  • 23. SDL_Flip int SDL_Flip (SDL_Surface * buffPantalla); Intercambia los buffers cuando empleamos la técnica de doble buffering, actualizando así el contenido de la pantalla.
  • 24.
  • 25. SDL_PumpEvents void SDL_PumpEvents (void); Actualiza el estado completo de la entrada por teclado y ratón.
  • 26. SDL_GetKeyState UInt8 * SDL_GetKeyState (int * numKeys); Nos da un puntero a la región de memoria, donde SDL tiene almacenado el estado de las teclas del teclado. numKeys normalmente valdrá NULL, para que podamos acceder a todas las teclas. Ejemplo: UInt8 * teclas = SDL_GetKeyState (NULL); if(teclas[SDLK_ESCAPE] == 1) printf(“Ha pulsado escape...”);
  • 27. SDL_GetMouseState UInt8 SDL_GetMouseState (int * x, int * y); Da las coordenadas (x, y) actuales del ratón. Devolviendo el estado de los botones del ratón. Que se puede comprobar haciendo lo siguiente: UInt8 Botones = SDL_GetMouseState (&x, &y); ((Botones & SDL_BUTTON(SDL_BUTTON_?)) == 1) -> Indica si está pulsado un botón o no. Los diferentes botones que hay son: SDL_BUTTON_LEFT , SDL_BUTTON_MIDDLE , SDL_BUTTON_RIGHT, SDL_BUTTON_WHEELUP, SDL_BUTTON_WHEELDOWN .
  • 28. SDL_GetRelativeMouseState UInt8 SDL_GetRelativeMouseState (int * rx, int * ry); Da las coordenadas relativas (x, y) actuales del ratón.
  • 29. Como compilar bajo linux Para compilar bajo linux no hace falta realmente mucho trabajo. Tan solo hacernos el fichero makefile, y cuando vayamos a llamar al compilador para generar el ejecutable, enlazando todos los ficheros objeto, hemos de añadir lo siguiente: `sdl-config --cflags --libs` Como ejemplo, en el caso de que solo tuvieramos un fichero fuente, el comando quedaría tal que: gcc `sdl-config --cflags --libs` -o prueba prueba.c