python - regius - piton reticulada
Guardando la puntuación más alta para un juego de pitón (5)
He hecho un juego muy simple en python usando pygame. La puntuación se basa en el nivel que alcance el jugador. Tengo el nivel como una variable llamada score
. Quiero mostrar el nivel superior al inicio o al final del juego.
Estaría aún más feliz de mostrar más de una puntuación, pero todos los otros hilos que he visto eran demasiado complicados para que yo los entendiera, así que por favor, manténgalo simple: soy un principiante, solo se necesita una puntuación.
Puede usar el módulo pickle
para guardar variables en el disco y luego volver a cargarlas.
Ejemplo:
import pickle
# load the previous score if it exists
try:
with open(''score.dat'', ''rb'') as file:
score = pickle.load(file)
except:
score = 0
print "High score: %d" % score
# your game code goes here
# let''s say the user scores a new high-score of 10
score = 10;
# save the score
with open(''score.dat'', ''wb'') as file:
pickle.dump(score, file)
Esto guarda una sola puntuación en el disco. Lo bueno de pickle es que puedes extenderlo fácilmente para guardar puntajes múltiples; simplemente cambia los scores
para que sean una matriz en lugar de un único valor. pickle
ahorrará prácticamente cualquier tipo de variable que le arrojes.
Vengo de un fondo Java, y mi Python no es genial, pero me gustaría ver la documentación de Python al leer y escribir en los archivos: http://docs.python.org/2/tutorial/inputoutput.html
Puede escribir una variable de puntaje en un archivo de texto sin formato antes de finalizar el juego, y luego cargar el mismo archivo la próxima vez que inicie el juego.
Mire en los métodos de read()
, readline()
y write()
.
Te recomiendo que uses shelve . Por ejemplo:
import shelve
d = shelve.open(''score.txt'') # here you will save the score variable
d[''score''] = score # thats all, now it is saved on disk.
d.close()
La próxima vez que abras el programa, utiliza:
import shelve
d = shelve.open(''score.txt'')
score = d[''score''] # the score is read from disk
y se leerá desde el disco. Puede usar esta técnica para guardar una lista de puntajes si lo desea de la misma manera.
Yo sugeriría:
def add():
input_file=open("name.txt","a")#this opens up the file
name=input("enter your username: ")#this input asks the user to enter their username
score=input("enter your score: ")#this is another input that asks user for their score
print(name,file=input_file)
print(number,file=input_file)#it prints out the users name and is the commas and speech marks is what is also going to print before the score number is going to print
input_file.close()
Primero crea un highscore.txt con un valor cero inicialmente. Luego usa el siguiente código:
hisc=open("highscore.txt","w+")
highscore=hisc.read()
highscore_in_no=int(highscore)
if current_score>highscore_in_no:
hisc.write(str(current_score))
highscore_in_no=current_score
.
.
#use the highscore_in_no to print the highscore.
.
.
hisc.close()
Podría hacer un marcador permanente de puntaje alto con este método simple, sin necesidad de estantes o encurtidos.