/
scores.py
104 lines (83 loc) · 2.38 KB
/
scores.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env python
#-*- coding: utf-8 -*-
# Scores.py
# Gère tout ce qui s'apparente
# aux scores !
# Bien entendu, il dépend
# du moteur ... il faut donc
# faire attention, certaines
# fonctions ne peuvent être
# appellées que si on est en cours
# de partie !
import persistance
import moteur
def recup_score ():
""" Recupere la liste des 5 meilleurs scores
@return : [ int ... ] = les 5 meilleurs scores
@throw :
persistance.CleInvalide
persistance.FichierInvalide
"""
score = []
i = 0
while i < 5:
score.append (persistance.get_propriete ("scores",str(i)+":score"))
i = i + 1
return score
def recup_nom (): #recupere les noms des joueurs des 5 meilleurs scores
""" Récupère les noms des joueurs des 5 meilleurs scores
dans le fichier de scores
@return : [str ... ] = les 5 meilleurs noms
@throw :
persistance.CleInvalide
persistance.FichierInvalide
"""
nom = []
i = 0
while i < 5:
nom.append (persistance.get_propriete ("scores",str(i)+":nom"))
i = i + 1
return nom
def calcul_score ():
""" Calcul le score actuel a partir du nombre de coups et de la difficulté
@return : int = le score calculé
"""
if moteur.est_en_partie () != True:
raise moteur.PasEnCoursDePartie
coups = moteur.get_restant () # Le nombre de coup qu'il reste à jouer ... donc plus il y en a mieux c'est !
mode = get_mode()
if mode == "facile":
score = 10 * (coups - 1) / 2
elif mode == "moyen":
score = 10 * (coups - 1) / 1.5
else:
score = 10 * (coups - 1)
return int (score) # On retourne un entier
def enregistre_score (nom_du_joueur = "AAA"):
""" Enregistre le score actuel dans le top 5 des scores s'il est superieur a un de ces derniers
@return : None
@throw :
moteur.PasEnCoursDePartie
persistance.CleInvalide
persistance.FichierInvalide
"""
score_actuel = calcul_score () # Throw PasEnCoursDePartie si besoin ...
top_score = recup_score ()
nom = recup_nom ()
i = 0
while i < 5:
try:
sc = int (top_score[i])
except ValueError:
raise persistance.ValeurInvalide ("scores",str (i) + ":score")
else:
if score_actuel > int(top_score[i]):
top_score.insert(i, str (score_actuel))
nom.insert(i, nom_du_joueur)
break
i = i + 1
i = 0
while i < 5:
persistance.set_propriete ("scores",str(i)+":score",top_score[i])
persistance.set_propriete ("scores",str(i)+":nom",nom[i])
i = i + 1