Minesweeper

Bugs‎ > ‎

bug3

Lorsque l'on consulte la liste des meilleurs scores pour un niveau donné, si plusieurs temps sont identiques seul le dernier trouvé sera affiché dans la liste.
Le problème vient du fait que les scores passaient par un dictionnaire pour être trié selon les temps. Du fait de l'unicité des clés d'un dictionnaire, seul le dernier temps (la clé) était gardé par écrasement.

Fichier : gui_score_chargement.py

Code incriminé :
        x = score.Score()
        listeGens =  x.getPersonnes(mode)
        dicScore = {}
        if listeGens: # s'il y a des scores
            resultat = _('Joueurs') + ' ' * 10 + _('Temps\n')
            for gen in listeGens:
                dicScore[int(gen.temps)] = gen.prenom
            keys = dicScore.keys () # trie des scores



Nouvelle version corrigeant le problème :

        x = score.Score() # objet servant à manipuler le fichier XML des scores
        listeScores =  [(elem.prenom, elem.temps) for elem in x.getPersonnes(mode)]
        listeScores.sort(lambda x, y: cmp(x[1], y[1])) # trie sur les scores



Voilà, c'est plus cours, plus Pythonien et plus juste !
Ce bug n'est donc plus présent à partir de la version mineure 14.