Self est l’objet
Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 12 sur 36.
Une classe peut créer autant d’objets que tu le souhaites, et chacun conserve ses propres attributs. Donne à __init__ un paramètre de vitesse, et deux étoiles peuvent tomber à des vitesses différentes :
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)Quand tu écris slow.update(), Python exécute Star.update(slow) : self correspond à slow, donc self.y += self.speed déplace slow de 1. fast.update() exécute les mêmes lignes avec self défini sur fast, et le déplace de 3. Une méthode, deux objets, et aucun ne touche aux nombres de l’autre.
C’est pourquoi chaque valeur appartenant à un objet doit être précédée de self.. Un nom sans cela, comme speed, est une simple variable locale de la méthode : elle disparaît lorsque la méthode se termine.
Défi
Facile- Ajoutez un troisième paramètre,
speed, à__init__et stockez-le dansself.speed. - Remplacez
starpar deux étoiles :slow = Star(200, 0, 1)etfast = Star(440, 0, 3). - Mettez à jour et dessinez les deux étoiles à chaque image.
Essayez vous-même
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Star")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 2
def update(self):
self.y += self.speed
if self.y > 480:
self.y = 0
def draw(self, screen):
pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)
star = Star(320, 0)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
star.update()
screen.fill((20, 22, 40))
star.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Toutes les leçons de Sprites et images
1Charger des images
Charger une imageLa placer avec un rectangleDéplacer l’imageRépéter un arrière-planPixels transparents2Tourner, retourner, redimensionner
Faire pivoter autour du centreRegarder dans la direction du volRedimensionner une imagePivoter à partir de l’original5Collisions au pixel près
Les rectangles semblent injustesMasquesSprites au pixel prèsZones de collision circulaires3Les classes pour les objets du jeu
Votre première classeLes méthodesSelf est l’objetUne liste d’objetsDes objets avec des imagesUne sous-classe6Animation à partir de feuilles de sprites
Découper une feuille de spritesUn compteur de framesAnimer avec le tempsUne explosion à déclenchement uniqueEntraînez-vous par vous-même : Playground Pygame