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 L¿algo que suce<strong>de</strong>? ¿que respuesta es esa?Vale, vale... espera que te explique. En <strong>SDL</strong>, un evento está asociado a una acción <strong>de</strong>lusuario sobre la aplicación que se está ejecutando. Como sabes, para interactuar <strong>con</strong> unor<strong>de</strong>nador usamos periféricos <strong>de</strong> entrada, como un teclado, un ratón, etc...Tipos <strong>de</strong> eventosTecladoEl teclado es el principal dispositivo <strong>de</strong> entrada, aunque algunos se empeñen en quesea el ratón. Ahora, mientras tecleo estas líneas, lo estoy utilizando, y no puedo imaginarun dispositivo más cómodo para esta tarea.Cada vez que pulses una tecla, <strong>SDL</strong> crea un evento que indica, no sólo que se pulsóuna tecla, también cuál fue. Más <strong>con</strong>cretamente <strong>SDL</strong> lanza un evento cada vez que sepulsa una tecla y también cuando <strong>de</strong> suelta. También nos informa sobre si hay algunatecla especial pulsada como Ctrl, Alt o Shift.RatónEl otro gran dispositivo <strong>de</strong> entrada es el ratón, quizás más a<strong>de</strong>cuado para ciertos tipos<strong>de</strong> juegos que el teclado. Hay dos tipos <strong>de</strong> eventos que <strong>de</strong>vuelve el ratón, uno referenteal movimiento y el otro referente al estado <strong>de</strong> los botones. En lo referente al movimiento,<strong>SDL</strong> nos informa sobre la posición <strong>de</strong>l puntero, así como <strong>de</strong> la distancia que ha recorrido<strong>de</strong>s<strong>de</strong> el último evento <strong>de</strong> ratón. En lo referente a los botones, el evento <strong>con</strong>tieneinformación sobre si se ha pulsado o se ha soltado un botón <strong>de</strong>l ratón, y por supuesto,cual <strong>de</strong> ellos fué.JoystickSin duda, el joystick es el rey <strong>de</strong> los periféricos para jugar. Sin embargo en el PC noexiste un estándar, y hay multitud <strong>de</strong> ellos. Debido a esto, <strong>SDL</strong> tiene un subsistemacompleto <strong>de</strong>dicado al joystick. Desgraciadamente, y quizás por no ser un periféricoestándar, no está muy extendido. Los eventos que se generarán van a <strong>de</strong>pen<strong>de</strong>r <strong>de</strong>ljoystick. En principio los principales son el movimiento <strong>de</strong>l joystick y la pulsación <strong>de</strong> losbotones. Algunos Joystick pue<strong>de</strong>n generar otro tipo <strong>de</strong> eventos, pero vamos a centrarnosen estos dos, que son lo más comunes.Otros eventosTambién po<strong>de</strong>mos <strong>con</strong>ocer eventos relacionados <strong>con</strong> el sistema operativo, y que nosvan a ser muy útiles. Sin duda el más importante es el que nos indica que se va a cerrarel juego (o que se va a cerrar la ventana <strong>de</strong>l juego). Otros importantes son los referidos alcambio <strong>de</strong> tamaño <strong>de</strong> la ventana (si es que nuestro juego se está ejecutando en unaventana) o el que nos indica que <strong>de</strong>bemos redibujarla (por cualquier motivo relacionado<strong>con</strong> el SO, como por ejemplo, que se superpuso una ventana <strong>de</strong> otra aplicación, etc...).Lectura <strong>de</strong> eventosPo<strong>de</strong>mos interrogar al sistema por los eventos <strong>de</strong> tres formas posibles. Po<strong>de</strong>mos esperar aque ocurra cierto evento para realizar una acción <strong>con</strong>creta, por ejemplo, un programa pue<strong>de</strong>quedar a la espera <strong>de</strong> que pulsemos un botón en un cuadro <strong>de</strong> diálogo.39

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

Saved successfully!

Ooh no, something went wrong!