Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Sistema de Logros y Achievements Android

Iniciado por AgeR, 06 de Noviembre de 2012, 12:14:08 AM

« anterior - próximo »

bnl

El uso de SharedPreferences es muy sencillo. En ellas puedes almacenar valores tipo cadena, booleanos, enteros, etc
Se accede a ellas por la clave (el nombre de la preferencia) a modo de diccionario clave / valor.

Para leer un valor (en este caso el numero de partidas jugadas) es asi de sencillo:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(contexto);
int numPartidasJugadas = sp.getInt("Num_partidas_jugadas", 0);

El 0 es el valor por defecto que es el que se obtendra si no se ha guardado aun ningun valor

Y para escribir un valor seria:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(contexto);
sp.edit().putInt("Num_partidas_jugadas", numPartidasJugadas).commit();


Hay podrias guardar en un boolean si se ha conseguido o no un determinado logro

sp.edit().putInt("Logro1 ", true).commit();

o si es un logro que requere una serie de acciones (por ejemplo matar 100 enemigos) puedes guardar el progreso conseguido(en este caso el numero actual de enemigos)

sp.edit().putInt("EnemigosMuertos ", enemigosMuertos).commit();

Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

YaW

Cita de: juaky en 28 de Febrero de 2013, 08:41:50 PM
Bueno esta app que estoy desarrollando está orientada a personas mayores, y una pantalla para aceptar términos de uso podría desorientarlo del objetivo que tiene la app. Suena un poco paranoico pero estoy buscando la mayor facilidad de uso y estoy tratando de evitar cosas como esa.

Si pudieras pasarme algún ejemplo de código con SharedPreferences te lo agradecería.

Saludos.

Si son logros de manera local y más sabiendo que la app está enfocada a mayores, yo no metería ningún servicio tipo Scoreloop/Swarm. Si es solo logros lo puedes hacer tú fácilmente. Simplemente guardando registro de los logros que llevas activados y demás y cuando toque sacar un popup con el logro.

La documentación del SharedPreferences: http://developer.android.com/guide/topics/data/data-storage.html#pref

Aquí en español: http://www.elandroidelibre.com/2010/08/aprendiendo-android-vi-recordando-valores-shared-preferences.html

juaky

Muchas gracias por vuestras respuestas.

La verdad es que cuando empecé con Android no le vi mucha utilidad a SharedPreferences y lo dejé un poco en el olvido.

Gracias de nuevo ;)

bnl

Yo le veo un montón de utilidades. Desde guardar las preferencias de configuración del usuario, a guardar la puntuación máxima (si solo guardamos una  y si no usamos base de datos), hasta el numero de partidas jugadas, el nombre del usuario, el  ultimo nivel desbloqueado, la ultima seleccion del usuario para que la proxima vez que entre le aparezca ya seleccionado y no tenga que seleccionarlo, etc
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NullPointerException

Siento el reflote, pero me gustaria aprovechar este thread para decir que a los que les interese hacer logros, leaderboards e incluso multiplayer en Android ahora hay Google Game Services, que es una plataforma que te gestiona todo eso mediante cuentas de Google +.

bnl

Yo he estado sopesando utilizarlo para las clasificaciones pero no me acaba de convencer. Creo que hay mucha gente a la que no le hace gracia estar en redes sociales o quiza le parezca complicado. Y de momento parece que no tiene muchos usuarios aunque quiza en el futuro cambie.
Me sorprendio negativamente ver que el grave defense que tiene entre un millon y 5 millones de descargas solo cuenta con unas 100 personas en su leaderboard.
Los juegos con scoreloop tiene muchos mas usuarios
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.