====== data.py ====== Le script contiendra les données utiles comme le réglage de la taille d'une case, ainsi que le chargement des images. J'utiliserai les images contenus dans cette archive : {{ :nsi:tds:pygame:pacman:images.zip |archive}}. Il vous faudra la décompresser dans un sous-repertoire ''images'' de votre projet. Voici un exemple de script : #data.py # data.py import pygame CELL_SIZE = 30 FOLDER = './images/' EXT = '.png' IMAGES = { "pacman1": 25, "pacman2": 25, "pacman3": 25, "pink_down": 25, "pink_up": 25, "pink_right": 25, "pink_left": 25, "red_down": 25, "red_up": 25, "red_right": 25, "red_left": 25, "afraid": 25, "pastille": 5, "pacgum": 15 } loaded = {} def load(name:str): """ accède à l'image d'identifiant name. si l'image n'est pas déjà dans loaded, l'ajoute. renvoie l'image. """ assert name in IMAGES if name in loaded: return loaded[name] image = pygame.image.load(FOLDER + name + EXT) image = image.convert_alpha() # gestion transparence size = IMAGES[name] w, h = image.get_size() # on veut que la dimension maximale de w soit calée sur size scale_factor = size / max(w, h) new_size = int(w * scale_factor), int(h * scale_factor) image = pygame.transform.scale(image, new_size) loaded[name] = image return image Le dictionnaire ''IMAGES'' indiquent la liste des images pouvant être chargées (clés du dictionnaire) et sa dimension qui sera notée ''size'' dans la fonction. Les images ne sont pas forcément carrées, alors ''size'' indique la dimension maximale. Par exemple si une image fait 50x20 et que ''size'' est 25, alors c'est la dimension 50 qui est réduite à 25, ce qui implique un facteur d'échelle de 0,5 qui sera également appliqué à l'autre dimension. Ainsi l'image sera réduite à 25x10. La fonction de chargement entretient un **cache**, c'est à dire une mémoire qui permet d'éviter de recharger ce qui a déjà été chargé. Si on demande l'image ''pacman1'' par exemple, la première fois elle est chargée avec ''pygame.load'', ce qui nécessite un accès au système de fichier. L'image est adaptée : gestion de la transparence, taille. Le résultat est conservé de sorte que lors d'un appel ultérieur, on pourra fournir directement l'image mémorisée.