• # Commentaires en vrac

    Posté par . 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//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 ())