2012-08-30 20 views
5

Esto no es tanto una cuestión técnica, ya que es una cuestión de estilo. Estoy haciendo una generalización de clavijas solitarias para Android, y habrá diferentes niveles en los que podrás jugar. Cada uno de ellos tendrá diferentes configuraciones de inicio para el tablero, diferentes conjuntos de movimientos que puedes hacer, etc. Ahora mismo lo tengo programado con un solo nivel básico, y todas esas variables se inicializaron de esa manera originalmente.¿Cómo guardo los niveles en un juego de Android?

¿Agrego un archivo de texto que tiene todos los diferentes tipos de niveles y lo programo para leerlo desde el archivo de texto? ¿Agrego una clase de nivel con toda esta información de cada nivel y hago varios objetos de nivel cuando se inicializa? ¿Hago una clase de nivel, pero la inicializo leyendo los niveles de un archivo de texto?

Estoy seguro de que todos los métodos funcionarían, pero ¿existe una forma estándar de hacerlo? Nunca he programado algo así antes.

+1

Lo haría por XML, luego lo cargaré en una clase 'Level'. Pero tal vez sea solo yo. – Eric

+0

El análisis XML es muy lento en Android. –

+0

Evite XML, no conozco Android, pero debería haber otra forma de serializar su clase Level, obteniendo más datos sin formato. No hablaste de eso pero necesitas un editor de niveles incluso uno simple. Una vez que lo tienes, almacenar datos y recuperarlos no es difícil. – bokan

Respuesta

4

Realmente no hay una forma estándar de hacer lo que desea, realmente depende de la complejidad de los datos que necesita almacenar para realizar cada inicialización de nivel. ¿Esta información va a cambiar o es estática? ¿Tiene sentido tenerlo organizado correctamente y separado de la lógica del código? Estas son preguntas que debes responder a ti mismo porque es tu juego y no conocemos todos los detalles.

Dado que, usted decide si debe almacenar esos datos en un archivo XML, TXT u otra cosa. Realmente no hay una respuesta correcta. Pero deberías (IMO) tener siempre algún tipo de clase Level, ese es el camino correcto en un contexto de OOP. El constructor podría tener los parámetros necesarios para construir el nivel a partir de los datos XML/TXT/cualesquiera. También podría tener todos los parámetros de nivel para que pueda inicializar todo por código, si lo necesita por alguna razón. Y, por supuesto, no olvide los métodos getter/setter para todos los atributos de nivel.

Una cosa que creo que no debería hacer es "hacer varios objetos de nivel cuando se inicializa". Debes separar la lógica de tu juego de los datos, no debes mezclar ambos de esa manera.

Probablemente no sea la respuesta que buscaba, pero es mayormente su decisión.

+0

Los datos son estáticos. Si no hago los objetos cuando se inicializa, ¿cuándo los hago? ¿Quiere decir que no debería tener todos los parámetros de nivel explícitamente escritos en la inicialización? ¿Por qué necesito métodos setter? ¿No usaría simplemente el constructor? – DanielLC

+0

Lo que quiero decir es lo que supusiste que quise decir;) Sin embargo, eso podría ser una depuración, eso está bien. Pero para tu código final, debes separar la lógica de tu juego de los datos. Es solo una buena práctica. Si no necesita métodos setter, no los use, estaba siendo genérico.Pero tal vez podrían ser útiles si necesita cambiar uno u otro para fines de depuración. Esto depende de ti, no hace mucha diferencia. –

2

La forma en que mis amigos y yo lo hacemos es almacenar los atributos de nivel en una base de datos, dependiendo del nivel que el usuario seleccione, leemos la base de datos y la cargamos en nuestra clase Level que crea el nivel para el usuario. !

Editar

Somos principiantes así, pero ha sido muy fácil hacer nuevos niveles después del primero se ha hecho. =] Especialmente porque todo lo que tenemos que hacer es agregar una fila a nuestra base de datos y completar los valores.

Cuestiones relacionadas