Ir al Indice
Creación de un juego "Paso a Paso"
Load/Save
En muchos juegos, vamos a necesitar de algún medio para poder guardar nuestra partida para luego poder recuperarla.
Esto es lo que vamos a ver brevemente en este capítulo.
El MMF, dispone de un sistema interno para poder guardar y recuperar el estado de nuestra aplicación.
Forma parte de las acciones del objeto
"Storyboard Controls":
Storyboard Controls > Frame position > Save frame position
¿ Qué hace realmente el "save frame position" ?Nos va a guardar el estado de los objetos de nuestro juego, incluyendo el estado de las variables globales y... en general de absolutamente todo. Esto es válido para los objetos internos del MMF. Para los externos, también será válido para aquellos objetos que lo permitan.
Esto se verá en un estudio aparte, pero de momento nos conformaremos con esto y lo aplicaremos a nuestro juego.
¿ Es adecuada esta "función" para todos los casos ?No.
Por un lado, que esto lo guarda "todo". A veces, sólo nos interesa salvar ciertas cosas y no "todo".
Por otro lado, que no tenemos un control sobre lo que estamos guardando. Control que nos puede hacer falta.
Además, hay cosas que no hace (o no hace bien), generalmente relacionadas con extensiones de terceros.
Por ello, se pueden usar otros métodos de
Save/Load, como es hacer uso de los objetos INI, INI++, Array, AssArray... etc
Nosotros, por ahora, nos centraremos en este sistema.
Realizar un Save/Load con la "función" Save frame position y Load frame position.1. Creamos un grupo en el que incluiremos los dos botones de "save" y "load".
2. Cuando nos pida el fichero a salvar y cargar, podemos indicarle uno concreto o no decirle ninguno, dejando el campo vacío, esto es "".
Si optamos por poner la ruta en blanco (""), esto hará que se dispare el explorador de archivos y aquí buscaremos el directorio que mejor nos convenga y le indicamos el nombre que queramos al fichero. Podemos ponerle una extensión adecuada, como por ejemplo .dat, o dejarlo sin la extensión (ya se encarga el programa de poner una por nosotros).
La otra opción es indicar un fichero concreto. Supongamos que queremos guardar nuestros datos en un fichero de nombre "save.dat" y que este se guarde en el mismo directorio que la aplicación.
En este caso tan sólo hemos de poner en la ruta lo siguiente:
apppath$+"save.dat"3. Si realizas algún cambio en el programa, el fichero salvado no te servirá.
Cada vez que edites la aplicación, te permitirá guardar y recuperar, pero no te dejará recuperar lo salvado antes de la edición.
4. Esto hará que podamos grabar y cargar la partida, pero tenemos, en nuestro ejemplo, dos problemas a resolver:
Problemas a resolver:Primer problema: Al salvar la partida, nos queda el botón de "save" con "foco". Esto es un inconveniente porque si pulsamos la tecla "space", se disparará el botón y no lo queremos así.
Solución: Nos valemos de la extensión "Window Control" y la usamos para guardar el estado del foco de nuestro juego, al principio, dónde ningún botón tiene el foco. Asimismo, al usar el "save frame position", recuperamos el foco salvado. Con lo que el problema queda resuelto.
Segundo problema: El Counter, al recuperar la partida, nos deja un rastro del número salvado, que al modificarse se va a sobreescribir. Y tampoco nos interesa esto.
Solución: Una solución sencilla es ir a las propiedades del
Counter >>
Display options y marcar la opción "
Display as background".
Esta solución me la tuvo que dar el
Admin, que tuve que pedir papas por empanada mental.
Y teniendo en cuenta todo ello, tenemos lo siguiente:
Descarga:
tank_07_save_load.mfaNota: Como esto no funciona en flash, ni en otros exportadores, no nos vamos a parar mucho con esta opción.[/b][/b]