| 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. |