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

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

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

Saved successfully!

Ooh no, something went wrong!