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 LManos a la obraUna <strong>de</strong> las claves a la hora <strong>de</strong> hacer un buen programa es partir <strong>de</strong> unas buenasestructuras <strong>de</strong> datos. Han <strong>de</strong> permitirnos cierta flexibilidad y a su vez no <strong>de</strong>ben ser <strong>de</strong>masiadocomplejas <strong>de</strong> manejar. Empecemos por el mapa. La unidad básica más pequeña para po<strong>de</strong>r<strong>de</strong>scribir el mapa es una habitación, así que vamos a crear el mapa en memoria como unaserie <strong>de</strong> habitaciones. Para <strong>de</strong>scribir una habitación usaremos la siguiente estructura <strong>de</strong> datos:// Estructura <strong>de</strong> datos para las// habitaciónesstruct habitacion {char <strong>de</strong>sc[255];int norte;int sur;int este;int oeste;} habitaciones[10];Hemos creado un array <strong>de</strong> 10 habitaciones (<strong>de</strong> 0 a 9. Aunque usaremos 9. Del 1 al 9), queson precisamente las habitaciones que tiene nuestro mapa. Si recuerdas, en el mapa pusimosuna numeración a cada habitación. Esta numeración ha <strong>de</strong> coincidir <strong>con</strong> su índice en el array.Veamos el significado <strong>de</strong> cada campo.El primero es la <strong>de</strong>scripción textual <strong>de</strong> la habitación. Aquí <strong>de</strong>scribimos lo que el jugadorpue<strong>de</strong> ver. Esta <strong>de</strong>scripción es siempre fija, por lo que omitiremos indicar si hay algún objetoen la habitación, ya que estos podrían cambiar <strong>de</strong> sitios o ser cogidos y ya no estar en lahabitación.Los siguientes cuatro campos son los <strong>de</strong> dirección, correspondientes a Norte, Sur, Este yOeste, e indican a la habitación que llegaremos si optamos por dar la or<strong>de</strong>n <strong>de</strong> movernos enuna <strong>de</strong> éstas direcciones. Veámoslo <strong>con</strong> un ejemplo:// Habitación 4strcpy(habitaciones[4].<strong>de</strong>sc,"Estas en el pasillo.");habitaciones[4].norte=1;habitaciones[4].sur=7;habitaciones[4].este=5;habitaciones[4].oeste=0;El primer campo no necesita mucha explicación, simplemente muestra el texto <strong>de</strong>scriptivo<strong>de</strong> don<strong>de</strong> se haya el jugador. Los cuatro siguientes nos indican que si el jugador <strong>de</strong>ci<strong>de</strong> ir alnorte, llegará a la habitación 1, si <strong>de</strong>ci<strong>de</strong> ir al sur llegará a la habitación 7 y así sucesivamente.Si ponemos uno <strong>de</strong> estos campos a 0, significa que el jugardor no pue<strong>de</strong> moverse en esadirección. Por lo tanto, si en nuestro programa tenemos una variable llamadahabitacionActual en la que se almacena la habitación en la que se encuantra el jugadoren este preciso instante, para hacer el movimiento usaremos algo como:habitacionActual=habitaciones[habitacionActual].norte;Simple, ¿no? Sigamos <strong>con</strong> otra estructura <strong>de</strong> datos importante: la encargada <strong>de</strong> <strong>de</strong>scribirlos objetos. Echémosle un vistazo:// Estructuras <strong>de</strong> datos para los objetosstruct objeto {int estado; // Estado <strong>de</strong>l objetochar <strong>de</strong>sc1[80]; // Descripción para estado 1char <strong>de</strong>sc2[80]; // Descripción para estado 214

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

Saved successfully!

Ooh no, something went wrong!