Script et programme

Identification

Infoforall

8 - Créer un programme en Python 2


Deuxième partie de l'activité.

Elle est consacrée à quelques interfaces graphiques. Nous ne rentrerons pas dans les détails de leurs utilisations, hors programme en NSI car il s'agit de choses trop spécifiques. Rien de difficile par contre : si vous savez vous documenter, vous pourrez facilement les prendre en main avec un peu de bonne volonté. Je ne fais que les survoler ici.

Récupérer une image, la transformer plusieurs fois et coller l'ensemble pour faire une belle affiche :

Logiciel nécessaire pour l'activité : Thonny

Evaluation : 2 questions

  questions 09

  questions 10

DM 🏠 : Non

Documents de cours PDF : .PDF

Sources latex : .TEX et entete.tex et licence.tex

1 - Cours : structure et exécution d'un programme

Attention aux noms des programmes Python

Vous allez enregistrer votre programme en lui donnant un nom. N'utilisez JAMAIS le nom d'un des modules Python qui existent déjà : turtle, random... Sinon, vous ne pourriez plus utiliser turtle.

1.1 Différence entre console interactive et programme

Cas de la console

Lorsqu'une ligne contient uniquement une expression, l'interpréteur l'évalue et affiche le résultat.

>>> a = 10 >>> b = a + 2 >>> b 12

On visualise bien que 12 s'affiche sur la console lorsqu'on demande juste d'évaluer b.

Cas du programme

Lorsqu'une ligne contient uniquement une expression, l'interpréteur l'évalue et... c'est tout. Pas d'affichage.

1 2 3
a = 10 b = a + 2 b

Ce programme n'affiche rien alors que la ligne 3 ne contient que la demande d'évaluation d'une expresssion.

Dans un programme, si vous voulez voir quelque chose s'afficher, il faut le demander explicitement :

1 2 3
a = 10 b = a + 2 print(b)
1.2 COMMENTAIRES : expliquer le fonctionnement

Les commentaires sont destinés à un lecteur humain et ils visent à rendre le code interne facile à comprendre.

Cela doit permettre de modifier un code même plusieurs années après sa création initiale.

Pour rajouter un commentaire en Python, on utilise le caractère dièse (#) de façon adaptée. Trois exemples à parfaitement comprendre :

  • Commentaire sur toute une ligne (ligne 1 ci-dessous)
  • 1
    # Toute cette ligne est un commentaire.
  • Commentaire en fin de ligne (ligne 2 ci-dessous)
  • 2
    print("Bonjour tout le monde") # Ceci est également un commentaire
  • Notez bien que la ligne 3 ne comporte aucun commentaire puisque le # fait juste partie d'un string.
  • 3
    print("Cette ligne ne contient pas de # commentaire")

Voici le résultat de ce programme L1 à L3 dans la console : il n'affiche pas les commentaires.

1 2 3
# Toute cette ligne est un commentaire. print("Bonjour tout le monde") # Ceci est également un commentaire print("Cette ligne ne contient pas de # commentaire")
>>> %Run progcommentaires.py Bonjour tout le monde Cette ligne ne contient pas de # commentaire >>>

L'interpréteur Python ne tentera pas d'exécuter les commentaires.

1.3 Structure d'un programme

Voici la structure attendue d'un programme Python :

  1. Importation des modules nécessaires au programme.
  2. Déclarations des CONSTANTES : par convention, le nom des CONSTANTES est constitué uniquement de majuscules.
  3. Déclaration des variables globales destinées à être lues depuis des fonctions : à utiliser avec modération. Elles sont sources de nombreux disfonctionnements lorsqu'elles sont mal gérées.
  4. Déclaration des fonctions.
  5. Les instructions du programme en lui-même : on nomme cette partie "programme principal" parfois. On y place également les variables globales qu'on envoie simplement en tant que paramètres.

Convention

Habituellement, on sépare les parties ci-dessous par au moins deux lignes vides.

1.4 Noms des variables globales et locales

Deux utilisations des variables globales :

A - Lues directement par les fonctions

Cela semble pratique mais si vous décidez de changer le nom dans le programme, c'est l'ensemble des lignes de vos fonctions qu'il va falloir modifier. C'est donc une source d'erreurs.

Exemple avec une fonction qui déplace le crayon pour le déplacer à la position voulue :

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
# Importation des modules supplémentaires import turtle as trt # CONSTANTES et variables globales lues par les fonctions feutre = trt.Turtle() # souvent juste placées au début de la partie Prgramme en Python # Déclaration des fonctions def deplacer(x, y): feutre.penup() # On lève la pointe feutre.goto(x, y) # On déplace le crayon feutre.pendown() # On abaisse la pointe # Programme feutre.color("red") feutre.fillcolor("orange") feutre.pensize(4) feutre.speed(5) feutre.forward(150) deplacer(0, 100) feutre.forward(150) deplacer(0, -100) feutre.forward(150)
B - Transmises aux fonctions lors de l'appel

Avantage : le nom de la variable globale n'a aucune importance depus la fonction puisqu'on la stocke temporairement dans une variable locale. Changer le nom de la variable d'un côté ou de l'autre n'aura donc aucune incidence.

Désavantage : le code semble plus lourd.

D'ailleurs, on peut même garder le même nom si on veut, Python ne sera pas perdu entre variable locale et globale.

Pour ne pas perdre le lecteur humain, le mieux est d'avoir

  • un nom pour la variable globale (feutre) et
  • un nom proche dans toutes les fonctions qui vont le récupérer en entrée (ftr).
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
# Importation des modules supplémentaires import turtle as trt # CONSTANTES et variables globales lues par les fonctions feutre = trt.Turtle() # souvent juste placées au début de la partie Prgramme en Python # Déclaration des fonctions def deplacer(ftr, x, y): ftr.penup() # On lève la pointe ftr.goto(x, y) # On déplace le crayon ftr.pendown() # On abaisse la pointe # Programme feutre.color("red") feutre.fillcolor("orange") feutre.pensize(4) feutre.speed(5) feutre.forward(150) deplacer(feutre, 0, 100) feutre.forward(150) deplacer(feutre, 0, -100) feutre.forward(150)

Cette activité (en deux parties) consiste en une présentation de programmes qu'on peut réaliser en réalisant des importations de modules divers et variés. Je donne quelques exemples mais le nombre de modules réalisés pour Python est énorme.

Aujourd'hui, quelques interfaces graphiques.

2 - pyplot de matplotlib : gestion de graphique

Nous allons travailler ici avec des tableaux et des courbes graphiques avec le module pyplot.

01 ✔° Si cela n'est pas fait, installer la bibliothèque matplotlib dans Thonny :

  • Allez dans l'onglet "Outils"
  • Cherchez "Gérer les paquets"
  • Lancez la recherche sur matplotlib puis activer l'installation
  • Attendez que l'installation soit totalement effectuée
  • Validez l'installation en utisant le bouton Fermer

02 ✔° Utiliser ce programme (en le nommant graphique.py qui va vous permettre de tracer un graphique affichant 3 points :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Importation import matplotlib.pyplot as plt # Constante TAILLE = 50 # Programme principal plt.scatter(x=5, y=10, c="blue", s=TAILLE*4) plt.scatter(x=10, y=20, c="green", s=TAILLE) plt.scatter(x=15, y=6, c="red", s=TAILLE*2) plt.grid() plt.show() plt.savefig("graphique.png")

Que fait ce programme ?

  • Ligne 2 : il importe le module permettant de tracer des courbes sous le nom de plt
  • Ligne 5 : on génère une constante valant 50.
  • Lignes 9-10-11 : on rajoute, avec la fonction scatter(), trois points dont on fournit les coordonnées x et y, ainsi que leur couleur c et leur taille s (pour size). La taille du point est gérée à partir de la constante TAILLE (to scatter veut dire éparpiller en anglais).
  • Ligne 13 : on rajoute la grille avec la fonction grid() (qui veut dire grille en anglais)
  • Ligne 14 : affiche le graphique à l'écran avec la fonction show()
  • Ligne 15 : sauvegarde l'image à l'aide de la fonction save()

On fait trois fois la même chose pour placer les points avec scatter(). Or, la fonction scatter() accepte également de recevoir des arguments de type tableau. On peut donc lui envoyer un tableau contenant les trois abscisses, un autre tableau contenant les trois ordonnées correspondantes, un tableau contenant les couleurs et un tableau contenant la taille du point.

03° Utiliser ce nouveau programme pour vérifier qu'il crée bien un graphique identique au précédent en utilisant uniquement la ligne 12 pour le générer :

12
plt.scatter(x=tx, y=ty, c=tc, s=ts)

Voici le programme dans sa totalité :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Importation import matplotlib.pyplot as plt # Constantes TAILLE = 50 TX = [5, 10, 15] TY = [10, 15, 5] TC = ["blue", "green", "red"] TS = [TAILLE*4, TAILLE, TAILLE*2] # Programme principal plt.scatter(x=TX, y=TY, c=TC, s=TS) plt.grid() plt.show() plt.savefig("graphique-avec-tableaux.png")

Questions

  • Que reçoit le paramètre x de la fonction scatter() cette fois (type et contenu) ?
  • Quelles vont être les informations utilisées pour tracer le premier point ?
  • Quelles vont être les informations transmises pour tracer le deuxième point ?

...CORRECTION...

  • Que reçoit le paramètre x de la fonction scatter() cette fois ?
  • 12
    plt.scatter(x=TX, y=TY, c=TC, s=TS)

    On voit que le paramètre x reçoit l'argument nommé TX. En allant voir en ligne 6, on voit que cette variable fait référence à un tableau.

    6
    TX = [5, 10, 15]

  • Quelles vont être les informations utilisées pour tracer le premier point ?
  • Pour répondre, il faut comprendre la ligne 12 : le paramètre x des abscisses reçoit le tableau TX, le paramètre y des ordonnées reçoit le tableau TY, le paramètre c des couleurs reçoit le tableau TC, le paramètre s des tailles (sizes en anglais) reçoit le tableau TS.

    Ensuite, la fonction utilise d'abord les éléments d'indice 0, puis ceux d'indice 1...

    Lors du premier tracé, on utilise donc les valeurs surlignées en jaune, celles correspondant aux élements d'indice 0.

    6 7 8 9
    TX = [5, 10, 15] TY = [10, 15, 5] TC = ["blue", "green", "red"] TS = [TAILLE*4, TAILLE, TAILLE*2]
  • Quelles vont être les informations transmises pour tracer le deuxième point ?
  • On utilise donc les valeurs surlignées en jaune, celles correspondant aux élements d'indice 1.

    6 7 8 9
    TX = [5, 10, 15] TY = [10, 15, 5] TC = ["blue", "green", "red"] TS = [TAILLE*4, TAILLE, TAILLE*2]

On peut aussi demander de tracer le graphique correspondant à une suite de droite reliant les points qu'on lui transmet. Il faut dans ce cas utiliser la fonction plot().

04 ✔° Utiliser ce nouveau programme où la seule différence se trouve en ligne 12 :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Importation import matplotlib.pyplot as plt # Constantes TAILLE = 50 TX = [5, 10, 15] TY = [10, 15, 5] TC = ["blue", "green", "red"] TS = [TAILLE*4, TAILLE, TAILLE*2] # Programme principal plt.plot(TX, TY) plt.grid() plt.show() plt.savefig("graphique-avec-tableaux-2.png")

Cette fois, on obtient un graphique où les points sont reliés entre eux par des droites.

En anglais,

  • to scatter veut dire éparpiller ou disperser.
  • to plot veut dire tracer un graphique.
2 Introduction au module pyplot

2..1 Installer puis importer

Le module pyplot appartient à la bibliothèque matplotlib.

Par y avoir accès, il faut

  1. Avoir téléchargé sur votre ordinateur la bibliothèque matplotlib contenant ce module pyplot: elle n'est pas présente de base dans Python Pour cela, deux solutions :
    • Avec Thonny : utiliser le menu Outils puis Gérer les paquets et rechercher puis installer matplotlib. C'est fini.
    • Avec Python en ayant bien coché la case PATH lors de l'installation : ouvrir un terminal (bash sous Linux, invite de commande ou powershell sous Windows puis taper ceci :
    • $ python3 -m pip install matplotlib

      La bibliothèque s'installe toute seule. C'est fini. Sous Windows, le 3 n'est pas obligatoire.

  2. Importer le module dans votre programme. Pour vérifier que l'installation s'est bien passée, le mieux est de tenter d'importer le module depuis la console Python.
  3. >>> from matplotlib import pyplot

    D'ailleurs, comme pyplot est long à taper, on fait plutôt ceci :

    >>> from matplotlib import pyplot as plt

2..2 Fonctions basiques

On notera qu'on rajoute toujours ici plt. pour indiquer d'aller chercher cette fonction dans le module qui porte ce nom.

  • plt.scatter(x=5, y=10, c="green", s=3) permet de demander la création d'un point en fournissant les coordonnées x, y et la couleur c et la taille s (size) du point.
  • plt.scatter(x=[5, 10, 15], y=[10, 20, 6], c=["blue", "green", "red"], s=[1, 2, 4]) permet de demander la création de plusieurs points en fournissant 4 tableaux : un par les x, un pour les y, un pour les couleurs et un pour les tailles de ces points.
  • Le premier point sera donc en (x=5, y=10) et aura l'apparence d'un point bleu de taille 1 pixel.

  • plt.plot([5, 10, 15], [10, 15, 5]) permet de placer les points puis trace des traits entrechaque point. On lui transmet ici d'abord le tableau des x puis le tableau des y.
  • plt.grid() permet de demander l'affichage d'une grille facilitant la lecture des valeurs.
  • plt.show() permet de demander l'affichage des données fournies. Sans son appel, rien ne s'affiche : plot() et scatter() générent la courbe en mémoire mais c'est bien show() qui autorise sa visualisation.
  • plt.savefig("graphique.png") permet d'enregistrer le résultat visuel dans un fichier image nommé ici "graphique.png". Puisqu'on ne donne qu'une adresse relative, le fichier-image apparaitra dans le répertoire où se trouve votre fichier-python.

3 - Pillow : gestion des images

Dans cette partie, nous allons travailler notamment avec les tuples et le module de gestion d'images Pillow mais qui se nomme PIL dans les scipts Python...

PIL ou Pillow ? Un peu d'histoire...

Il existait un premier module permettant de gérer les images en Python. Ce module se nommait PIL.

Après quelques années, une partie de l'équipe des créateurs a décidé de faire un 'fork', c'est à dire une version alternative, différente mais basée sur le même code initial. Cette autre version se nomme Pillow.

Aujourd'hui, c'est la version Pillow qui perdure mais pour des raisons de retrocompatibilité des programmes, elle s'appelle PIL dans les programmes...

C'est pourquoi :

  • Nous allons installé depuis Thonny un module nommé Pillow, mais
  • on l'importera depuis notre programme Python sous le nom PIL.

05 ✔° Si cela n'est pas fait, installer la bibliothèque Pillow dans Thonny :

  • Allez dans l'onglet "Outils"
  • Cherchez "Gérer les paquets"
  • Lancez la recherche sur Pillow puis activer l'installation
  • Attendez que l'installation soit totalement effectuée
  • Validez l'installation en utisant le bouton Fermer
  • Vérifiez que cela c'est bien passé en tentant d'importer le module depuis la console
  • >>> import PIL >>> _

    Vous devriez juste retrouver la main une fois le module importé.

06 ✔° Télécharger l'image suivante en la plaçant dans un répertoire nommé par exemple Couleurs. Vous nommerez l'image Tux.png.

Tux est le nom de ce pingouin, la mascotte de Linux.

Sur votre ordinateur, vous aurez donc quelque chose semblable à cela :

📁 Couleurs

📄 Tux.png

4 types d'images
Les images PNG

ce type compresse les images sans les dégrader (leurs fichiers nécessitent moins d'octets qu'avec un enregistrement basique)

Ce type PNG accepte

  • les images où les pixels sont définis par trois valeurs (dans l'ordre RGB ou RVB : le rouge, le vert, le bleu) mais également
  • les images RGBA possèdant une capacité de transparence et où les pixels sont définis par quatre valeurs : le rouge, le vert, le bleu et la valeur ALPHA qui désigne à quel point ce pixel doit être transparent.
Les images JPEG ou JPG

Ce type d'images compressent encore plus les données et les fichiers image prennent donc encore moins de place.

Leurs désavantages ?

  1. Ces fichiers JPEG n'acceptent pas la transparence ALPHA
  2. Les images enregistrées sont dégradées lors de la compression : elles perdent un peu en qualité. Pas assez pour le voir réellement sur un écran, mais assez pour le voir si on zoome.

Les images BMP

Ces images ne sont pas compressées : on ne perd pas en qualité mais les fichiers sont énormes...

Les images GIF

Ces images permettent pas un grand nombre de couleurs mais ont l'avantage d'être de petits fichiers, d'avoir la capacité de transparence si on le veut et on peut les associer à la suite pour réaliser une animation GIF.

07 ✔° Créer un nouveau programme Python nommé gestion_images.py dans un répertoire Couleurs.

1 2 3 4 5 6 7 8 9 10
# Importations from PIL import Image as Img # Constantes NOM_IMAGE = "Tux.png" NOM_SAUVEGARDE = "Tux2.png" # Programme principal ref_image = Img.open(NOM_IMAGE) ref_image.show()

📁 Couleurs

📄 Tux.png

📄 gestion_images.py

Si vous lancez le programme, vous devriez voir et comprendre :

  • Qu'il crée un objet-python de votre image en L9. A partir de là, la variable ref_image contient l'identifiant mémoire de l'image que Python pourra manipuler. Mais attention, l'image stockée en mémoire de Python est juste une copie créée à partir du fichier-image. Les deux sont indépendants.
  • En L10, on demande à Python de demander au programme d'affichage d'images de votre ordinateur de vous l'afficher à l'écran.

Nous allons maintenant utiliser Python pour créer des images à la Andy Warhol.

08° Télécharger l'image suivante en la plaçant dans Couleurs. Vous nommerez l'image mm.jpg.

Il s'agit d'une image de Marilyn Monroe.

📁 Couleurs

📄 Tux.png

📄 gestion_image.py

📄 mm.jpg

Modifier le script gestion_image.py pour qu'il parvienne à afficher cette nouvelle image. Bien entendu, modifier les choses correctement en agissant uniquement sur les variables et constantes.

Dans cette partie, nous allons voir comment modifier facilement les couleurs d'une image RBG. Nous allons :

  1. Créer d'un objet-image dans Python à partir d'un fichier-image (avec la fonction open()).
  2. Récupérer dans trois variables les informations des couches R, G, et B avec la méthode split().
    On notera qu'en anglais, to split veut dire séparer.
  3. Créer un nouvel objet-image avec la méthode merge() mais en inversant les couches.
    On notera qu'en anglais, to merge veut dire fusionner.
  4. Demander l'affichage à l'écran du nouveau objet-image avec show().
  5. Enregistrer le nouvel objet-image dans un vrai fichier-image save().

09 ✎° Utiliser cette version de gestion_images.py. Ce nouveau programme réalise les opérations 1 à 5 signalées ci-dessus.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# Importations from PIL import Image as Img # Constantes NOM_IMAGE = "mm.jpg" NOM_SAUVEGARDE = "mm_modif.jpg" # Programme principal ref_image = Img.open(NOM_IMAGE) # Création d'un objet-image couches = ref_image.split() # Récupération des intensités des différentes couches rouge = couches[0] # contient uniquement les valeurs rouges des pixels vert = couches[1] # contient uniquement les valeurs vertes des pixels bleu = couches[2] # contient uniquement les valeurs bleues des pixels nouvelles_couches = (bleu, rouge, vert) # RGB : bleu prend la place de rouge, rouge celle de vert et vert celle de bleu nouvelle_image = Img.merge("RGB", nouvelles_couches) # On fusionne (merge) les 3 couches dans un autre sens ! nouvelle_image.show() nouvelle_image.save(NOM_SAUVEGARDE)

Lancer le programme. Vous devriez constater l'apparition d'un nouveau fichier image dans le répertoire :

📁 Couleurs

📄 Tux.png

📄 gestion_image.py

📄 mm.jpg

📄 mm2.jpg

Répondre aux questions suivantes sur votre copie numérique (et faire appel à moi si vous ne comprennez pas une question ou ce qu'il faut répondre).

  1. Sur quelle ligne est déclaré le nom du fichier-image à lire ?
  2. Sur quelle ligne est déclaré l'objet-image ref_image de base ?
  3. Lignes 12 à 15 : pourquoi peut-on dire que la variable couches (créée par split() pour récupérer les parties rouge-vert-bleu de l'image de base) fait référence à un type construit ?
  4. Lignes 17 : pourquoi peut-on dire que la variable nouvelles_couches fait référence à un tuple ?
  5. Comment se nomme la méthode qui permet de créer une nouvelle image en lui fournissant trois couches jouant le rôle des couches R, G et B ?
  6. Quelle est la couche qu'on désigne comme devant jouer le rôle du rouge dans notre nouvelle image ?
  7. Comment se nomme la méthode qui permet de sauvegarder notre nouvel objet-image dans un fichier ?
  8. Sur quelle ligne est déclaré le nom du fichier-image qu'on veut créer ?

Nouvelle compétence testée  savoir analyser un programme d'une trentaine de lignes.

Le programme ci-dessous utilise une nouvelle méthode paste() dont voici le prototype :

image_sur_laquelle_on_veut_coller.paste(image_à_coller, (x,y))
où le couple (x, y) désigne les coordonnées du point où on veut coller l'image.

10 ✌° Utiliser cette dernière version du programme :

  1. Il lit l'image de base et en tire les informations dont on a besoin (largeur, hauteur, valeurs des couches R, G et B)
  2. Il génère 3 nouvelles images aux mêmes dimensions mais en permutant les couches.
  3. Il génère une nouvelle image nommée affiche_artistique, deux fois plus large et plus haute que les autres
  4. Il place une à une les 4 autres images sur l'affiche de façon à faire un panneau.
  5. Il montre l'affiche à l'écran puis la sauvegarde dans un fichier.
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
# Importations from PIL import Image as Img # Constantes NOM_IMAGE = "mm.jpg" NOM_AFFICHE = "affiche_Andy_Warhol.jpg" # Programme principal # étape 1 : on récupère l'image de base et les informations dont on aura besoin ref_image = Img.open(NOM_IMAGE) # Création d'un objet-image x = ref_image.width # on récupére la largeur en pixels de l'image de base y = ref_image.height # on récupère la hauteur en pixels de l'image de base couches = ref_image.split() # Récupération des intensités des différentes couches rouge = couches[0] # contient uniquement les valeurs rouges des pixels vert = couches[1] # contient uniquement les valeurs vertes des pixels bleu = couches[2] # contient uniquement les valeurs bleues des pixels # étape 2 : on génère trois images en permutant les couleurs nouvelle_image1 = Img.merge("RGB", (bleu, vert, rouge)) # On fusionne (merge) les 3 couches dans un autre sens ! nouvelle_image2 = Img.merge("RGB", (bleu, rouge, vert)) # On fusionne (merge) les 3 couches dans un autre sens ! nouvelle_image3 = Img.merge("RGB", (rouge, bleu, vert)) # On fusionne (merge) les 3 couches dans un autre sens ! # étape 3 : on génère une image RBB complétement noir et on rajoute les 3 autres dessus. affiche_artistique = Img.new("RGB", (x*2, y*2), (0, 0, 0)) affiche_artistique.paste(ref_image, (0, 0)) # on la colle en haut à gauche affiche_artistique.paste(nouvelle_image1, (x, 0)) # on la colle en haut à droite affiche_artistique.paste(nouvelle_image2, (0, y)) # on la colle en bas à gauche affiche_artistique.paste(nouvelle_image3, (x, y)) # on la colle en bas à gauche affiche_artistique.show() affiche_artistique.save(NOM_AFFICHE)

Après avoir visualiser que cela fonctionne, modifier le programme pour qu'il réalise une affiche des 4 images en largeur (4*1) plutôt qu'en (2*2). La nouvelle image devra se nommer affiche_Andy_Warhol4x1.jpg".

4 - Pyxel

4 Principe du programme pyxel

Logo Pyxel
Logo Pyxel

Le principe de fonctionnement d'un programme utilisant le module pyxel est basé sur la séquence suivante qui inclut une boucle infinie :

    1 - La fonction init() crée la fenêtre graphique.

    2 - La fonction run() active l'alterance infinie ci dessous :

    3 - TANT QUE le programme est actif :

      On mémorise les actions de l'utilisateur

      SI la dernière mise à jour date de plus d'un 1/30e de seconde

        On active une fonction controle() qui va

        faire appel à des fonctions maj_...() pour mettre à jour les données

        On modifie l'affichage (la vue) en faisant appel à vue() qui va

        faire appel à cls() pour effacer l'écran

        faire appel à des fonctions afficher_...() pour afficher des formes à l'écran

      Fin du SI

    Fin TANT QUE

On peut résumer cela en 

  • Séquence de réglage : init() puis run()
  • 30 fois par seconde : controle() puis vue()
Logo Pyxel
Logo Pyxel (https://github.com/kitao/pyxel#)

11° Tester si le module pyxel est importé sur votre ordinateur.

>>> import pyxel

Si cela déclenche une erreur, Outils > Gérer les paquets dans Thonny et chercher à installer pyxel.

Les couleurs dans Pyxel
Les couleurs dans Pyxel
Fiche
Logo Pyxel (https://github.com/kitao/pyxel#)

5 - FAQ

Pas de questions pour l'instant

Maintenant que nous avons vu comment créer un programme, nous allons compléter les notions de fonctions, de boucles et d'instructions conditionnelles dans le but de réaliser des programmes de plus en plus complexes.

Activité publiée le 11 11 2023
Dernière modification : 11 11 2023
Auteur : ows. h.