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 Lint hab;int lotengo;} objetos[5];// Habitación en la que se// encuentra// Indica si tengo este objeto// en mi inventarioAl igual que <strong>con</strong> las habitaciones, hemos creado un array <strong>de</strong> 5 elementos para los objetos(aunque usaremos 4. Del 1 al 4.). Veamos el significado <strong>de</strong> los campos <strong>de</strong> la estructura.El campo estado es para objetos que pue<strong>de</strong>n tener dos estados diferentes. Por ejemplo,imagina una linterna, que podría estar encendida o apagada. Los campos <strong>de</strong>sc1 y <strong>de</strong>sc2,<strong>con</strong>tienen la <strong>de</strong>scripción <strong>de</strong>l objeto cuando está en estado 1 y cuando está en estado 2. En<strong>de</strong>sc1 habría algo como “una linterna apagada” y en <strong>de</strong>sc2 tendríamos “unalinterna encendida”. Pue<strong>de</strong> que un objeto sólo tenga un estado, por ejemplo, una llave.En este caso el campo <strong>de</strong>sc2 pue<strong>de</strong> <strong>de</strong>jarse vació o <strong>con</strong>tener el mismo texto que <strong>de</strong>sc1, yaque nunca será mostrado.El campo hab, indica en que habitación se encuentra el objeto, y el campo lotengo siestá a 0 significa que el jugador no posee este objeto y si está a 1 es que lo tiene en suinventario. El siguiente ejemplo inicializa un objeto <strong>de</strong>l juego:// perroobjetos[PERRO].estado=1;strcpy(objetos[PERRO].<strong>de</strong>sc1,"un perro rabioso");strcpy(objetos[PERRO].<strong>de</strong>sc2,"un perro comiéndose un hueso");objetos[PERRO].hab=9;objetos[PERRO].lotengo=0;Este código inicializa el objeto perro. Por claridad hemos usado la <strong>con</strong>stante PERRO enlugar <strong>de</strong> usar directamente su posición en el array. En el caso <strong>de</strong>l perro, una vez que le damosel hueso, pasa al estado 2, en el que ya no es peligroso.Ahora que ya tenemos <strong>de</strong>finidas las estructuras <strong>de</strong> datos, vemos como quedaría el gameloop <strong>de</strong> nuestro juego.// Inicialización <strong>de</strong> estadoswhile (!done) {// Mostramos información <strong>de</strong> la habitación.// Leemos la entrada <strong>de</strong>l jugador}// Procesamos la entrada <strong>de</strong>l jugadorEn la inicialización <strong>de</strong> estados establecemos los valores iniciales <strong>de</strong> las variables que van a<strong>de</strong>finir el estado <strong>de</strong>l juego. Por ejemplo, la variable habitacionActual, indica en quéhabitación nos en<strong>con</strong>tramos. Tenemos que darle un valor inicial, que es la habitación don<strong>de</strong>comienza el jugador la partida. En este caso, la habitación 1.Ya <strong>de</strong>ntro <strong>de</strong>l game loop, la primera tarea es mostrar la <strong>de</strong>scripción <strong>de</strong>l lugar don<strong>de</strong> sehaya el jugador. Para este juego, <strong>con</strong>viene poner esta fase al principio <strong>de</strong>l bucle, sin embargo,en otros (como en el caso <strong>de</strong> 1945, que <strong>de</strong>sarrollaremos en los siguientes capítulos) nos<strong>con</strong>vendrá más situarlo en la parte final <strong>de</strong>l mismo.Hay tres informaciones que necesita el jugador: la <strong>de</strong>scripción <strong>de</strong> la habitación, si seencuentra algún objeto en la misma y por último, cuáles son las salidas válidas <strong>de</strong> la estancia.15

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

Saved successfully!

Ooh no, something went wrong!