====== Module pour un item ======
# Fichier item.py
import pygame
import loader
class Item(pygame.sprite.Sprite):
SIZE = 40 # taille du sprite en pixels
def __init__(self, line, col, name):
"""
line, col: numéro de ligne et colonne de l'item dans la grille
name: étiquette indiquant le type d'item
crée un item
"""
super().__init__()
self.line = line
self.col = col
self.family = name
self.image = loader.load(name, self.SIZE, self.SIZE)
self.rect = self.image.get_rect()
self.rect.left = col*self.SIZE
self.rect.top = line*self.SIZE
Que fait-on dans ce code ?
* ligne 6: une classe doit être vue comme un manuel indiquant comment créer un objet et comment l'utiliser. On définit ici un classe ''Item''. Mais on ne la crée pas à partir de rien. On utilise une classe définie dans pygame, la classe Sprite. Toutes les fonctions qui se chargent des détails de l'affichage sont déjà faites dans cette classe de base. Cela nous économise beaucoup de travail.
* ligne 7: on précise la taille en pixels d'un item. Cette taille est valable pour tous les items.
* ligne 8: La fonction (on dit méthode dans le cas d'une classe) ''%%__init__%%'' sert à initialiser l'objet que l'on crée. On va donc définir ce qu'il faut faire au moment où on crée un nouvel item. Vous pouvez voir que l'on doit fournir des informations. On doit donner la position ''x'', ''y'' et aussi le nom du type d'objet.
* ligne 14: nous utilisons ''Sprite'' de pygame et cette classe nécessite certaines initialisations. On les lance donc. Ici ''super()'' signifie « La classe que l'on utilise comme base ».
* lignes 15 - 17: ''self'' désigne l'objet que l'on est en train de créer. On attache à cet objet ds attributs ''line'', ''col'' et ''name'' de sorte que l'on pourra facilement savoir la position d'un sprite dans la grille et son type.
* ligne 18: on récupère l'image correspondante à l'aide du loader et on l'attache à l'objet. ''self.SIZE'' permet d'indiquer la taille voulue.
* ligne 19: dans pygame, un Sprite doit toujours avoir un attribut ''image'' et un attribut ''rect''. Ce dernier représente la position du cadre du sprite sur l'écran. On l'initialise en reprenant les dimensions de l'image.
* lignes 20, 21: On modifie ''rect'' pour qu'il se positionne à l'endroit voulu, selon la ligne et colonne et la taille de chaque case.
On pourra utiliser ce module de la façon suivante :
# en entête avec les imports :
from item import Item
# si le sprite est ligne 3, colonne 2 on peut aussi faire :
new_item = Item(3, 2, 'orange')