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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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 LLa primera función nos <strong>de</strong>vuelve el número <strong>de</strong> CD-ROMs <strong>con</strong>ectados al sistema. Lasegunda nos <strong>de</strong>vuelve una ca<strong>de</strong>na <strong>con</strong> el nombre <strong>de</strong>l CD-ROM. Como parámetro recibeel número <strong>de</strong>l CD-ROM que queremos <strong>con</strong>sultar.Como era <strong>de</strong> esperar, antes <strong>de</strong> po<strong>de</strong>r utilizar el CD-ROM hay que abrirlo. La funciónencargada <strong>de</strong> esto es la siguiente:<strong>SDL</strong>_CD *<strong>SDL</strong>_CDOpen(int drive);Como parámetro le pasamos el CD-ROM que queremos abrir, y nos <strong>de</strong>volverá unpuntero a una estructura <strong>SDL</strong>_CD <strong>con</strong> la información <strong>de</strong>l CD. La función que cierra el CD-ROM esvoid <strong>SDL</strong>_CDClose(<strong>SDL</strong>_CD *cdrom);Como parámetro le pasamos el valor <strong>de</strong>vuelto por <strong>SDL</strong>_CDOpen al abrir el CD.La función que nos permite <strong>con</strong>ocer el estado <strong>de</strong>l CD es <strong>SDL</strong>_CDStatus.CDstatus <strong>SDL</strong>_CDStatus(<strong>SDL</strong>_CD *cdrom);Nos <strong>de</strong>volverá el estado actual <strong>de</strong>l CD-ROM. Los posibles valores son los mismos quepue<strong>de</strong> tomar el campo status <strong>de</strong> la estructura <strong>SDL</strong>_CD.Las siguientes dos funciones que vamos a presentar nos permiten reproducir pistas<strong>de</strong>l CD.int <strong>SDL</strong>_CDPlay(<strong>SDL</strong>_CD *cdrom, int start, int length);int <strong>SDL</strong>_CDPlayTracks(<strong>SDL</strong>_CD *cdrom, int start_track, int start_frame, intntracks, int nframes));La primera función comienza la reproducción <strong>de</strong>l CD en el frame indicado por start ydurante los frames indicados por length. Si hay algún problema <strong>con</strong> la reproducción<strong>de</strong>vuelve –1, si la reproducción tuvo éxito <strong>de</strong>volverá 0.La función <strong>SDL</strong>_CDPlayTracks reproduce una o varias pistas. Con el parámetrostart_track le indicamos la pista <strong>de</strong> inicio, y numtracks el número <strong>de</strong> pistas areproducir. El parámetro start_frame es el frame, <strong>de</strong>ntro <strong>de</strong> la pista, don<strong>de</strong> queremosiniciar la reproducción. Por último nframes es el número <strong>de</strong> frames <strong>de</strong> la última pista quequeremos reproducir.Seguramente querrás po<strong>de</strong>r comenzar la reproducción en un <strong>de</strong>terminado momentoexpresado en tiempo en vez <strong>de</strong> en frames. Pue<strong>de</strong>s usar la siguiente fórmula que nos<strong>de</strong>vuelve la duración en segundos.Longitud en frames / CD_FPSLa <strong>con</strong>stante CD_FPS <strong>con</strong>tiene los frames por segundos <strong>de</strong>l CD-ROM. Para finalizar,y antes <strong>de</strong> que veamos un ejemplo sobre el manejo <strong>de</strong>l CD-ROM, vamos a ver cuatrofunciones que requieren poca expliación:int <strong>SDL</strong>_CDPause(<strong>SDL</strong>_CD *cdrom);int <strong>SDL</strong>_CDResume(<strong>SDL</strong>_CD *cdrom);int <strong>SDL</strong>_CDStop(<strong>SDL</strong>_CD *cdrom);int <strong>SDL</strong>_CDEject(<strong>SDL</strong>_CD *cdrom);La primera función pone en pausa la reproducción <strong>de</strong>l CD, mientras que<strong>SDL</strong>_CDResume <strong>con</strong>tinúa <strong>con</strong> la reproducción. Si queremos parar la reproducción57

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

Saved successfully!

Ooh no, something went wrong!