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 Lx1=getx();y1=gety();x2=sp.getx();y2=sp.gety();// pos. X <strong>de</strong>l sprite1// pos. Y <strong>de</strong>l sprite1// pos. X <strong>de</strong>l sprite2// pos. Y <strong>de</strong>l sprite2}if (((x1+w1)>x2) && ((y1+h1)>y2) && ((x2+w2)>x1) && ((y2+h2)>y1)) {return TRUE;} else {return FALSE;}Se trata <strong>de</strong> comprobar si el cuadrado (superficie) que <strong>con</strong>tiene el primer sprite, sesolapa <strong>con</strong> el cuadrado que <strong>con</strong>tiene al segundo.Hay otros métodos más precisos que nos permiten <strong>de</strong>tectar colisiones. Voy apresentar un método algo más elaborado. Consiste en dividir el esprite en pequeñassuperficies rectangulares tal y como muestra la próxima figura.Figura 5.6. Un método más elaborado <strong>de</strong> <strong>de</strong>tección <strong>de</strong> colisionesSe pue<strong>de</strong> observar la mayor precisión <strong>de</strong> este método. El proceso <strong>de</strong> <strong>de</strong>tección<strong>con</strong>siste en comprobar si hay colisión <strong>de</strong> alguno <strong>de</strong> los cuadros <strong>de</strong>l primer sprite <strong>con</strong>alguno <strong>de</strong> los cuadrados <strong>de</strong>l segundo utilizando la misma comprobación que hemosutilizado en el primer método para <strong>de</strong>tectar si se solapan dos rectangulos. Se <strong>de</strong>ja comoejercicio al lector la implementación <strong>de</strong> este método <strong>de</strong> <strong>de</strong>tección <strong>de</strong> colisiones (pista:tendrás que añadir a la clase sprite un array <strong>de</strong> elementos <strong>de</strong>l tipo <strong>SDL</strong>_Rect que<strong>con</strong>tenga cada uno <strong>de</strong> los cuadrados). A <strong>con</strong>tinuación se muestra el listado completo <strong>de</strong>nuestra librería. Está compuesta por dos archivos: el archivo <strong>de</strong> cabeceras csprite.h y el<strong>de</strong> implementación csprite.cpp.82

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

Saved successfully!

Ooh no, something went wrong!