Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Programar Puntuaciones

Iniciado por javiel, 12 de Mayo de 2004, 09:21:52 AM

« anterior - próximo »

javiel

 Hola a todos:

Estoy con un juego y quiero guardar las puntuaciones de este y también algunas configuraciones, como dificultad y cosas de esas. Bueno, no se como hacerlo realmente. La idea en un principio puede ser guardarlo en un archivo de texto cosa que no es difícil, pero hay varios problemas:

- Cualquiera puede editar el texto y cambiar las puntuaciones. Esto la verdad es algo que no me preocupa mucho, que cada uno haga lo que quiera, pero tampoco me gustaría ponerlo tan fácil.

- El juego esta para linux y para windows. En windows de principio no hay problema, guardo el archivo y lo modifico cuando quiera, pero en linux tengo que guardarlo dentro de un directorio del HOME, ya que los archivos de instalacion los tengo en directorios donde solo tiene permiso "root". Bueno, lo que tendría que hacer es comprobar si existen los archivos al ejecutar el juego y sino pues crearlos. El problema es que no se como en linux saber cual es el directorio HOME del usuario que lo ejecuta. Estoy utilizando C++. ¿sabéis como?

Habéis hecho algo de esto?? como lo habéis hecho??

saludos y gracias a todos
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

samsaga2

 1º Guarda las puntuaciones en formato binario en lugar de texto, asi quien no sepa lo que es un editor hexadecimal lo tendra chungo

2º En linux el usuario siempre tiene puesta la variable de entorno HOME indicando cual es su directorio personal. Para aprovechar el mismo codigo en Windows que en Linux puedes hacer que si existe la variable HOME se guarden las puntuciones alla y si no en el directorio actual.

shephiroth

 Buenas. Referente a tu pregunta, creo que la unica solucion que tienes se llama encriptación, o codificación (esta palabra parece que asusta menos). Me explicaré con un ejemplo. Deberas crearte 1 estructura y 2 funciones, que serían:

typedef struct
{
char * nombre;
int puntuacion;
} datosaguardar;

char * codificar (datosaguardar ultimojugador)
{
res=(char*) malloc (sizeof(char)*64);
....
return res;
}
datosaguardar decodificar(char*res)
{
ultimojugador = *(datosaguardar*) malloc (sizeof(datosaguardar));
...
return ultimojugador
}

Ahora bien, cuando un usuario juega y quieres guardar, harías una llamada a codificar con los datos, por ejemplo:

ultimojugador.nombre="isabel"
ultimojugador.puntuacion=10000

char * res = codificar(ultimojugador); //res="XH2YDODO5AY"

cuando tienes q cargar los resultados, lees del fichero ese "XH2YDODO5AY" que nadie sabe lo que es, se lo pasas a la funcion descodificar, y te devuelve la estructura con tus datos de nombre y puntuación.

Esto tiene la ventaja de q puedes guardar mas datos, como nivel alcanzado, tiempo utilizado, etc...etc...

Por supuesto el proceso de codificacion lo has de poner tu, el de decodificación debe ser el contrario xDD.

Yo la verdad no buscaría uno demasiado complicado, si alguien realmente sabe del tema siempre te lo podrá sacar, actualmente los debbugers estan muy mejorados ^^U

SUERTE

javiel

 Lo del directorio HOME está claro, pero como obtengo esa informacion desde c++??

Yo  puedo poner en un terminal

# echo $HOME

pero en el programa, no se como hacerlo. Al crear el configure de mi programa (que está hecho con Anjuta), me crea un archivo "config.h" que coloca una serie de "defines" con las rutas donde se van a instalas las imágenes, el ejecutable y demás, pero no dice el directorio HOME.

¿habría alguna forma de saber desde C++ el directorio HOME del usuario que está ejecutando la aplicación?
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)






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.