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 LEn este ejemplo hay algunas diferencia <strong>con</strong> respecto a los anteriores. En la funciónmain() hay un bucle while que se parece bastante a un game loop. Después <strong>de</strong> inicializar laposición <strong>de</strong> los aviones mediante la función inicializa() y cargar e inicializar los sprites enla función InitSprites(), entramos en un bucle en el que lo primero que hacemos esllamar a la función DrawScene(), que se encarga <strong>de</strong> dibujar los dos sprites en la pantalla.Acto seguido, <strong>con</strong>sultamos el teclado y el joystick para comprobar si hay que realizar algúnmovimiento en nuestro avión, y en caso afirmativo, aplicamos dicho movimiento. La funciónDrawScene() es realmente la única que se encarga <strong>de</strong> dibujar los sprites. Esta función esllamada en cada iteración <strong>de</strong>l game loop. Cada vez que se pintan los sprites, <strong>de</strong>cimos que seha dibujado un frame. Lo primero que hace es borrar el cuadrado que acupaba el avión en elframe anterior (realmente pintar un cuadro <strong>de</strong> color negro). Si no hiciéramos esto, el avión<strong>de</strong>jaría un feo rastro al moverse (pue<strong>de</strong>s probar a quitar estas líneas y ver el efecto). Losiguiente que hacemos es actualizar las coor<strong>de</strong>nadas <strong>de</strong>l sprite y dibujarlo <strong>con</strong> el métododraw(). Hemos almacenado esta información en dos estructuras que <strong>con</strong>tienen lascoor<strong>de</strong>nadas tanto <strong>de</strong> nuestro avión como <strong>de</strong>l avión enemigo.Despues <strong>de</strong>l pintado, comprobamos la colisión <strong>de</strong> la nave enemiga <strong>con</strong> la nuestra. Si seproduce la colisión, salimos <strong>de</strong>l game loop poniendo la variable done a 1.La clase InitSprites() también es interesante. En ella cargamos los frames que van aformar parte <strong>de</strong> los sprites (1 sólo frame en éste caso), y acto seguido lo añadimos al sprite.90

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

Saved successfully!

Ooh no, something went wrong!