Estoy haciendo un programa en python (el buttonmania).
Tengo el programa muy avanzado pero tengo un problema:
Tengo que meter la opcion de rankin, consigo crear un diccionario que guarda los diferente nombres y puntuaciones de lo jugadores pero no consigo que me los ordene por puntuacion (crea y va guardando los datos en un archivo de texto).
Se que tengo que usar el sort o sorted, pero buscando por google no me ha quedado nada claro como se utiliza para ordenarlo.
Teniendo que es mi primer programa "serio" en python me esta costando mucho xD
Os pongo mi codigo para que lo veais un poco, no seais muy duros que es mi primer programa y se que podria estar mucho mejor hecho... pero al menos funciona xD
Agradeceria mucho la ayuda con el sort ya que con eso estoy muy perdido...
No quiero que me lo arregleis sino que me deis informacion para aprender a usar el sort
Gracias por vuestro tiempo!
Código
#!/usr/bin/env python # -*- coding: iso-8859-15 -*- import os import time import random def CrearMatriz(): matriz = [] for i in range (8): matriz.append([0]*8) return matriz def ImprimirMatriz(matriz): for x in range(1,7): for y in range(1,7): print matriz[y][x], def GolpeaMatriz(matriz, fila, columna): if (matriz[fila][columna]>0): matriz[fila][columna] = matriz[fila][columna]-1 else: matriz[fila][columna] = 3 if (matriz[fila-1][columna]>0): matriz[fila-1][columna] = matriz[fila-1][columna]-1 else: matriz[fila-1][columna] = 3 if (matriz[fila+1][columna]>0): matriz[fila+1][columna] = matriz[fila+1][columna]-1 else: matriz[fila+1][columna] = 3 if (matriz[fila][columna-1]>0): matriz[fila][columna-1] = matriz[fila][columna-1]-1 else: matriz[fila][columna-1] = 3 if (matriz[fila][columna+1]>0): matriz[fila][columna+1] = matriz[fila][columna+1]-1 else: matriz[fila][columna+1] = 3 def SumaMatriz(matriz, fila, columna): if (matriz[fila][columna]<3): matriz[fila][columna] = matriz[fila][columna]+1 else: matriz[fila][columna] = 0 if (matriz[fila-1][columna]<3): matriz[fila-1][columna] = matriz[fila-1][columna]+1 else: matriz[fila-1][columna] = 0 if (matriz[fila+1][columna]<3): matriz[fila+1][columna] = matriz[fila+1][columna]+1 else: matriz[fila+1][columna] = 0 if (matriz[fila][columna-1]<3): matriz[fila][columna-1] = matriz[fila][columna-1]+1 else: matriz[fila][columna-1] = 0 if (matriz[fila][columna+1]<3): matriz[fila][columna+1] = matriz[fila][columna+1]+1 else: matriz[fila][columna+1] = 0 def GeneraNivel(matriz, nivel): for x in range(nivel*3): fila = random.randint(1,6) columna = random.randint(1,6) SumaMatriz(matriz, fila, columna) return matriz matriz = CrearMatriz() ListaFila = [] ListaColumna = [] numerogolpes = 0 nombre = raw_input('Introduzca un nombre: ') nivel = int(raw_input('Introduzca un nivel del 1 al 9: ')) while (nivel < 1) or (nivel > 9): nivel = int(raw_input('Introduzca un nivel del 1 al 9: ')) matriz = GeneraNivel(matriz, nivel) os.system('clear') ImprimirMatriz(matriz) tecla = raw_input('''(P) Introducir posicion (S) Salir del juego (N) Nueva partida (D) Deshacer movimiento Pulse una tecla: ''') while (tecla != 'S') or (tecla != 's'): if (tecla == 'P') or (tecla == 'p'): fila = int(raw_input('Introduzca una fila: ')) while (fila < 1) or (fila > 6): fila = int(raw_input('Introduzca una fila: ')) columna = int(raw_input('Introduzca una columna: ')) while (columna < 1) or (columna > 6): columna = int(raw_input('Introduzca una columna: ')) GolpeaMatriz(matriz, columna, fila) numerogolpes = numerogolpes + 1 ListaFila.append(fila) ListaColumna.append(columna) os.system('clear') ImprimirMatriz(matriz) puntuacion = float(numerogolpes/3*nivel) exito = True for x in range(1,7): for y in range(1,7): if (matriz[y][x] != 0): exito = False if (exito == True): print 'Enhorabuena ',nombre,' has terminado el juego.' print 'Puntuacion: ',puntuacion C = {"N": nombre,"P": puntuacion} CN = (C["N"]) CP = str((C["P"])) f = open("R.txt","a") f.write(CP) f.write(" puntuacion de ") f.write(CN) f.write("\n") f.close() elif (tecla == 'S') or (tecla == 's'): break elif (tecla == 'D') or (tecla =='d'): SumaMatriz(matriz, columna, fila) if (numerogolpes > 0): numerogolpes = numerogolpes - 1 ListaFila.pop() ListaColumna.pop() os.system('clear') ImprimirMatriz(matriz) elif (tecla == 'N') or (tecla == 'n'): nivel = int(raw_input('Introduzca un nivel del 1 al 9: ')) matriz = CrearMatriz() GeneraNivel(matriz,nivel) os.system('clear') ImprimirMatriz(matriz) tecla = raw_input('''(P) Introducir posicion (S) Salir del juego (N) Nueva partida (D) Deshacer movimiento Pulse una tecla: ''')