Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Module loader
Quelques explications : Quand on charge un fichier image, Python doit lancer une demande vers le système d'exploitation qui va devoir aller chercher le fichier sur le disque dur… Un chargement est rapide mais si on doit charger des milliers de fois, on risque d'avoir des ralentissements.
On va s'efforcer de ne pas accéder inutilement au système de fichier. Quand un fichier image a été chargé, on garde le contenu dans une mémoire pour ne pas avoir à refaire le chargement la prochaine fois que l'on aura besoin de cette image.
C'est le rôle du Loader.
# loader.py
# créer un sous-dossier images
# placer une image defaut.png dans ce sous-dossier
import pygame
IMAGES = {
"banane":"banane.png",
"cerise":"cerise.png",
"orange":"orange.png",
"poire":"poire.png",
"pomme":"pomme.png"
}
FOLDER = "./images/"
loaded = {}
def load(name, width, height):
"""
accède à l'image d'identifiant name.
si l'image n'est pas déjà dans loaded, l'ajoute.
renvoie l'image.
"""
key = (name, width, height)
if key not in loaded:
filename = IMAGES.get(name, "defaut.png")
image = pygame.image.load(FOLDER + filename)
image = image.convert_alpha()
image = pygame.transform.scale(image, (width, height))
loaded[key] = image
return loaded[key]
Quelques mots d'explications :
- On créera un sous-dossier
imagespour contenir les fichier image. - Pour les cas d'erreur, on place une image par défaut dans ce dossier. On l'appellera
defaut.png IMAGESpermet d'associer une clé, par exemple"orange"à un nom de fichier"orange.png". Dans le programme on aura donc plus besoin de se soucier des noms de fichier, on pourra se contenter d'indiquer la clé. Naturellement, il faut créer ces fichiers !loadedgardera en mémoire toutes les images précédemment chargées.- Lorsque l'on charge une image, on précise le nom de la clé. Si l'image correspondante n'est pas déjà chargée, on récupère le nom de fichier, on charge l'image et on la stocke dans
loaded.
Utilisation dans un autre module : Si j'ai besoin de charger l'image name dans un autre module du projet, il faudra indiquer en début de module :
import loader
Puis au moment de charger :
image = loader.load(name, 40, 40)
Je vous ai préparé quelques images. Vous êtes libre d'en prendre d'autres. fruits.zip
