Forum Programmation.python Démineur agréable avec tkinter

Posté par  (site web personnel) . Licence CC By‑SA.
6
18
fév.
2023

Salut les cas pythoneux,

Voici ma dernière copie d’un démineur agréable codé en Python avec le module tkinter.

Dans le contexte, là où je travail, je n’ai accès qu’à Python 3.5 Portable sur de vieux P4 Windows XP… (sans PyGame par exemple) C’est donc le défi…, faire des jeux en tkinter, sans son pour l’instant, mais c’est pas grave…

J’apprends moi-même Python, je prépare des supports d’apprentissage et j’accompagne déjà quelques élèves…

J’avais déjà partagé mon premier démineur par ici…

J’ai suivi vos conseils.

Par contre, je n’avais pas de réponse concernant la limite de récursivité que je rencontrais pour ma fonction d’exploration… Alors je l’ai réécrite autrement…

J’ai amélioré l’affichage, les couleurs, … Je vous laisse découvrir…

Le fichier python, demineur-g1.5.py

Et la capture d’écran ↓
Titre de l'image

Et surtout, dites-moi ce que vous pensez du code en tant que exemple pédagogique aussi…

  • # Quelques remarques du coup

    Posté par  (site web personnel) . Évalué à 7.

    • Tu ne respectes pas trop le style de programmation Python (au niveau des la gestion des espaces surtout), ce qui à la limite n'est pas hyper grave, mais en plus le style n'est pas cohérent ; un coup il y a des espaces après les parenthèses d'appel d'une fonction, un coup non.
    • Je n'ai rien contre le code en français dans un objectif d'apprentissage de la programmation (même si bon les petits français font de l'anglais dès l'école primaire—il y a plus de 30ans j'en ai fait à partir du CM2—et le vocabulaire nécessaire est assez basique: array, list, draw, flag, width…), mais là encore ce n'est pas cohérent ; placer_drapeau() côtoie input_config_valid().
    • J'imagine qu'on en est pas à la première leçon (il y a des fonctions, classes, boucle imbriquées…) du coup je pense que les élèves savent que cases = list() peut s'écrire cases = [].
    • À plusieurs endroits la gestion des boucles est plus C que Python ; par exemple
        for li in range( hauteur ) :
            for ci in range( largeur ) :
                cases[li][ci].draw()

    pourrait être plus joliment écrit en :

        for line in cases:
            for case in line:
                case.draw()
    • [^] # Re: Quelques remarques du coup

      Posté par  . Évalué à 4.

      Sur les variables en français (ou dans la langue courante du public concerné), de mémoire j'avais apprécié, en BTS, que notre prof utilise des noms clairs et explicites pour les cours sur les listes chaînées, des variables comme "celui_d_avant" "celui_d_apres".

      Par contre je suis en train de lire un bouquin en français pour avoir de meilleures bases en Python, et il y a des noms de variables avec des accents. Mauvaise idée pour la reprise de code, à mon avis.

      Car oui, on peut écrire ça en Python :

      >>> élément = 9
      >>> 餅 = "Matcha"
      

      Et même, pour faire plaisir à Marotte :

      >>> אַתָּהגִּבּוֹרלְעוֹלָםאֲ = 7
      >>> אַתָּהגִּבּוֹרלְעוֹלָםאֲ
      7
      

      Mais c'est franchement un poil galère de reprendre du code comme ça :).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.