Pensando en que voy a implementar la posibilidad de guardar el Hi-Score en Red Giant, y ahora que no ando tan apretado de exámenes, me he puesto a investigar sobre la escritura de archivos en python. He realizado un pequeño ejemplo que guarda los récords que nosotros pasemos por teclado y luego los lee. Cómo los guarda en un archivo, los récords permanecen aún cerrando el programa. Tiene un pequeño fallo y es que al leer los récords, los lee en orden inverso al que fueron escritos. Os paso el código:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -----------------------------
# Autor: Rafael Álvarez García
# e-mail: algarafa@gmail.com
# -----------------------------
# Este es un ejemplo sencillo
# de como guardar datos es un
# archivo.
# -----------------------------
import pickle
import sys
while True:
print 'Este programa le permite hacer lo siguiente:'
print '1) Guardar nuevos récords.'
print '2) Leer los récords guardados.'
print '3) Salir.'
eleccion = raw_input('Introduzca el número de la opción:')
if eleccion == '1':
print ''
num_records = int(raw_input('Introduzca el número de récords que va a registrar:'))
indice = num_records
records = []
while indice > 0:
temp_rec = int(raw_input('Introduzca un récord:'))
records.append(temp_rec)
indice -= 1
arch = open('records', 'w')
pickle.dump(records, arch)
arch.close()
print '¡Los récords han sido registrados!'
print ''
if eleccion == '2':
print ''
arch = open('records', 'r')
records = pickle.load(arch)
longitud = len(records)
indice = 1
while longitud > 0:
record = records[longitud - 1]
print 'Récord ', indice,':', record
indice += 1
longitud -= 1
print ''
if eleccion == '3':
print ''
print 'Gracias por usar el programa.'
print 'Pulse enter de nuevo para salir.'
raw_input()
sys.exit(0)
¡Espero que os sea de utilidad!
Advertisement







Si no te quieres complicar tanto guárdalos como texto. Claro, se puede hacer trampa, pero depende del propio jugador si se quiere engañar a sí mismo.
En realidad lo de usar el módulo pickel es mucho más práctico. Si solo vas a guardar un récord, como va a ser el caso de mi juego, esta bien guardarlos en modo texto, pero pickle tiene una ventaja fundamental. Al guardarlos como texto, siempre hay que convertirlo a string mientras que con pickel mantienes el formato. Es decir en este ejemplo tenemos una lista:
Ejemplo = [3, 5, 6]
Con pickel puedo guardar la variable ejemplo tal cual y volver a cargarla como lista directamente, mientras que como texto no.
Entiendo lo que dices. Estaba pensando en un formato tipo texto como xml en el que por ejemplo en la primer línea guardas la primera puntuación, la segunda línea la segunda puntuación y así. Pero, sí, con pickle te evitas tener que hacer el trabajo de cargarlas adecuadamente.