J'ai remarqué que la forme int(x/v) est souvent utilisée alors que x est déjà un entier, dans ce cas il vaut mieux utiliser la division entière : x//v
Il y a plusieurs constructions de conditions qui ne sont pas facile à lire, par exemple dans la fonction draw_case de demineur-g:
if connu :
if bombe :
txt = "*"
else :
if nbalentours < 1 :
txt = " "
else :
txt = str( nbalentours )[0]
else :
if drapeau < 1 :
txt = "X"
else :
if drapeau < 2 :
txt = "P"
else :
txt = "?"
on peut ici utiliser des elif plutôt que des if imbriqués et des == à la place des < pour améliorer la lisibilité
if connu and bombe:
txt = "*"
elif connu:
txt = " " if nbalentours==0 else str(nbalentours)
elif drapeau == 1:
txt = "P"
elif drapeau == 2:
txt = "?"
else:
txt = "X"
#la dernière partie pourrait juste être (drapeau ne peux valoir que 0,1 ou 2)
#else:
# txt = "XP?"[drapeau]
La fonction explorer renvoie False si ont sort de la grille ou si on sort normalement de la fonction, elle renvoie True si on est sur une bombe, mais il me semble que la valeur renvoyée n'est jamais utilisée, de plus le test pour savoir si la case est sur la grille peut être simplifié en utilisant le dictionnaire de la grille if case not in cases:
La syntaxe cases[(ligne, colonne)] être remplacée par cases[ligne, colonne], c'est le signe , qui défini le tuple pas les parenthèses (sauf pour le tuple vide ())
# Commentaires en vrac
Posté par Pierre . En réponse au message Un démineur pour apprendre.... Évalué à 6.
Bonjour
J'ai remarqué que la forme
int(x/v)est souvent utilisée alors que x est déjà un entier, dans ce cas il vaut mieux utiliser la division entière :x//vIl y a plusieurs constructions de conditions qui ne sont pas facile à lire, par exemple dans la fonction
draw_casede demineur-g:on peut ici utiliser des
elifplutôt que desifimbriqués et des==à la place des<pour améliorer la lisibilitéLa fonction
explorerrenvoieFalsesi ont sort de la grille ou si on sort normalement de la fonction, elle renvoieTruesi on est sur une bombe, mais il me semble que la valeur renvoyée n'est jamais utilisée, de plus le test pour savoir si la case est sur la grille peut être simplifié en utilisant le dictionnaire de la grilleif case not in cases:La syntaxe
cases[(ligne, colonne)]être remplacée parcases[ligne, colonne], c'est le signe,qui défini le tuple pas les parenthèses (sauf pour le tuple vide())