[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 LSi tenemos más <strong>de</strong> un joystick <strong>con</strong>ectados, nos pue<strong>de</strong> resultar interesante sabercuáles están abiertos y cuáles no. La función <strong>SDL</strong>_JoystickOpened nos ofrece estainformación:int <strong>SDL</strong>_JoystickOpened(int in<strong>de</strong>x);El parámetro in<strong>de</strong>x es el número <strong>de</strong> joystick que queremos <strong>con</strong>sultar. Esta función<strong>de</strong>vuelve 1 si el joystick <strong>con</strong>sultado está abierto y 0 en caso <strong>con</strong>trario.Nos queda ver un par <strong>de</strong> funciones vitales antes <strong>de</strong> entrar en harina.int <strong>SDL</strong>_JoystickNumAxes(<strong>SDL</strong>_Joystick *joystick);int <strong>SDL</strong>_JoystickNumButtons(<strong>SDL</strong>_Joystick *joystick);Estas funciones nos <strong>de</strong>vuelven el número <strong>de</strong> ejes y el número <strong>de</strong> botonesrespectivamente que tiene el joystick. Como parámetro le pasamos el joystick quequeremos <strong>con</strong>sultar (el valor <strong>de</strong>vuelto por <strong>SDL</strong>_JoystickOpen).Leyendo el joystickComo comentamos al principio <strong>de</strong> la sección, nos vamos a centrar en la lectura <strong>de</strong> los ejesy <strong>de</strong> los botones. Si quieres profundizar, pue<strong>de</strong>s remitirte a la documentación <strong>de</strong> <strong>SDL</strong>.Antes <strong>de</strong> <strong>con</strong>sultar el estado <strong>de</strong>l joystick, hay que hacer una llamada a la función<strong>SDL</strong>_JoystickUpdate.void <strong>SDL</strong>_JoystickUpdate(void);Esta función, que no toma ni <strong>de</strong>vuelve ningún parámetro, actualiza el estado <strong>de</strong> losjoysticks abiertos. Antes <strong>de</strong> cada lectura <strong>de</strong> estado hay que hacer una llamada a estafunción.El estado <strong>de</strong> los ejes <strong>de</strong>l joystick lo <strong>con</strong>sultamos <strong>con</strong> la siguiente función:Sint16 <strong>SDL</strong>_JoystickGetAxis(<strong>SDL</strong>_Joystick *joystick, int axis);Como parámetros le indicamos el joystick y el eje que queremos <strong>con</strong>sultar. Nos<strong>de</strong>volverá el valor <strong>de</strong>l estado <strong>de</strong>l eje. Este valor estará entre -32768 y 32768.Para la <strong>con</strong>sulta <strong>de</strong> los botones utilizaremos la funciónUint8 <strong>SDL</strong>_JoystickGetButton(<strong>SDL</strong>_Joystick *joystick, int button);Esta función es similar a la anterior, sólo que en vez <strong>de</strong>l eje a <strong>con</strong>sultar, le pasamos elbotón a <strong>con</strong>sultar. El valor <strong>de</strong>vuelto pue<strong>de</strong> ser 1, el botón está pulsado y 0 en caso<strong>con</strong>trario.El siguiente ejemplo (ejemplo3_3) muestra el uso <strong>de</strong>l joystick.48