nsi:tds:pygame:plateforme:module_rectangle
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:tds:pygame:plateforme:module_rectangle [2023/01/17 14:04] – supprimée - modification externe (Unknown date) 127.0.0.1 | nsi:tds:pygame:plateforme:module_rectangle [2023/03/21 20:01] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Le module rectangle ====== | ||
| + | Il consiste seulement en la création d'un rectangle de couleur. On précise ses dimensions, sa position et sa couleur. | ||
| + | |||
| + | ===== Module de base ===== | ||
| + | |||
| + | <code python> | ||
| + | # rectangle.py | ||
| + | |||
| + | import pygame | ||
| + | |||
| + | class Rectangle(pygame.sprite.Sprite): | ||
| + | def __init__(self, | ||
| + | """ | ||
| + | x, y: position du coin supérieur gauche | ||
| + | width, height: dimensions | ||
| + | color: couleur selon le format (r, g, b) | ||
| + | Cette fonction crée un rectangle | ||
| + | """ | ||
| + | |||
| + | super().__init__() | ||
| + | self.image = pygame.Surface((width, | ||
| + | self.image.fill(color) | ||
| + | self.rect = self.image.get_rect() | ||
| + | self.rect.left = x | ||
| + | self.rect.top | ||
| + | </ | ||
| + | |||
| + | ===== Génération de listes ===== | ||
| + | |||
| + | Dans un deuxième temps, on réalise qu'on aimerait pouvoir générer des plates-formes en grande quantité. On disposerait alors d'une liste contenant toutes les informations utiles : | ||
| + | |||
| + | <code python> | ||
| + | [ (15, 25, 100, 10), | ||
| + | (50, 60, 150, 20), | ||
| + | ... | ||
| + | ] | ||
| + | </ | ||
| + | Cette liste est composée d' | ||
| + | |||
| + | <wrap important> | ||
| + | |||
| + | <code python> | ||
| + | # rectangle.py | ||
| + | |||
| + | from abc import abstractmethod | ||
| + | import pygame | ||
| + | |||
| + | class Rectangle(pygame.sprite.Sprite): | ||
| + | ... | ||
| + | |||
| + | @abstractmethod | ||
| + | def make_plates_formes(liste, | ||
| + | """ | ||
| + | liste: tableau de (x, y, width, height) donnant les caractéristiques des plates-formes à créer | ||
| + | color: couleur au format (r, g, b) | ||
| + | renvoie un groupe contenant les plates-formes | ||
| + | """ | ||
| + | groupe = pygame.sprite.Group() | ||
| + | for x, y, width, height in liste: | ||
| + | pf = Rectangle(x, | ||
| + | groupe.add(pf) | ||
| + | return groupe | ||
| + | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | Quel est le sens de '' | ||
| + | |||
| + | Une classe est un modèle qui permet de créer des objets, des objets qui respectent le modèle. Ainsi on pourrait créer un objet '' | ||
| + | |||
| + | La classe définit également des méthodes qui sont des fonctions agissant sur un objet. Par exemple, l' | ||
| + | |||
| + | Les méthodes concernent toujours la carte en question. Par exemple : | ||
| + | <code python> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | 11 | ||
| + | >>> | ||
| + | 9 | ||
| + | >>> | ||
| + | 14 | ||
| + | </ | ||
| + | |||
| + | Ici, c'est un jeu de bataille. Le valet est au-dessus du 10 et l'as au-dessus du roi. Quand on écrit '' | ||
| + | |||
| + | Donc la méthode doit s' | ||
| + | |||
| + | On peut vouloir ranger dans la classe des fonctions qui concernent le modèle lui-même mais un objet en particulier. C'est le cas ici. On parle alors de **méthode abstraite**, | ||
| + | </ | ||
