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 LDX = 0DY = 3La operación que se realiza en cada frame es:X = X + DXY = Y + DYCon lo que las coor<strong>de</strong>nadas <strong>de</strong>l avión quedarán actualizadas a la nueva posición.Dándole un valor <strong>de</strong> –3 a DY <strong>con</strong>seguiremos que el avión ascienda en vez <strong>de</strong> <strong>de</strong>scen<strong>de</strong>rpor la pantalla, y dándole un valor <strong>de</strong> 3 tanto a DX como a DY <strong>con</strong>seguiremos que semueva <strong>de</strong> forma diagonal <strong>de</strong>scen<strong>de</strong>nte. El campo tipo nos indican que tipo <strong>de</strong> enemigoes. Si vale 0 será un caza, si vale 1 será un kamikaze y si vale 3 será el avión jefe. Elcampo estado nos indica el estado <strong>de</strong>l avión. Lo utilizaremos en el caza para saber si suestado es el <strong>de</strong> acercarse para disparar o el <strong>de</strong> dar la vuelta para huir. El campoimpactos indica el número <strong>de</strong> impactos que ha sufrido el avión. Lo utilizaremos <strong>con</strong> elavión jefe al que sólo podremos <strong>de</strong>struir <strong>de</strong>spués <strong>de</strong> 100 impactos. Por último, el camponframe lo utilizaremos para almacenar el frame actual <strong>de</strong>ntro <strong>de</strong> la animación. En<strong>con</strong>creto, lo utilizaremos en el caza para realizar la animación <strong>de</strong> looping que realiza parahuir <strong>de</strong>spués <strong>de</strong> soltar el proyectil.La función siguiente será la encargada <strong>de</strong> ir creando enemigos.void creaenemigo() {int libre=-1;// ¿Hay algún enemigo libre?for (int i=0 ; i=0) {enemigo[libre].activo=1;enemigo[libre].nframe=0;enemigo[libre].x=rand();if (enemigo[libre].x > 640)enemigo[libre].x=(int)enemigo[libre].x % 640;enemigo[libre].tipo=rand();if (enemigo[libre].tipo >= 2)enemigo[libre].tipo=(int)enemigo[libre].tipo % 2; // 2 tipos <strong>de</strong>enemigos (0,1)if (enemigo[libre].tipo==0) {enemigo[libre].y=-30;enemigo[libre].dx=0;enemigo[libre].dy=5;enemigo[libre].estado=0;}if (enemigo[libre].tipo==1) {enemigo[libre].y=-30;if (enemigo[libre].x>nave.getx()) {enemigo[libre].dx=-3;} else {enemigo[libre].dx=3;}enemigo[libre].dy=5;118

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

Saved successfully!

Ooh no, something went wrong!