Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Soft87

#1
Scripting / Ayuda con Python
26 Mayo 2011, 02:19 AM
Hola a todos.
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 (python) [Seleccionar]
#!/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],
        print
           
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




print
matriz = CrearMatriz()
ListaFila = []
ListaColumna = []
numerogolpes = 0
print
nombre = raw_input('Introduzca un nombre: ')
print
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)
print
os.system('clear')
ImprimirMatriz(matriz)
print
print
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'):
        print
        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)
        print
        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
            print 'Enhorabuena ',nombre,' has terminado el juego.'
            print
            print 'Puntuacion: ',puntuacion
            print
            print
            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()
            print
            print
            print
           
        print
    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()
        print
        os.system('clear')
        ImprimirMatriz(matriz)
        print
    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)
       
    print   
    tecla = raw_input('''(P) Introducir posicion          (S) Salir del juego
(N) Nueva partida                (D) Deshacer movimiento


Pulse una tecla: ''')