Menu
CoddyTech

Les méthodes

Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 11 sur 36.

Les nombres de l’étoile se trouvent maintenant dans la classe, mais les règles qui les régissent, sa façon de tomber et d’être dessinée, sont encore dans la boucle. Les fonctions écrites à l’intérieur d’une classe sont des méthodes, et elles placent les règles à côté des données :

class Star:
    # __init__ comme précédemment

    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)

Le premier paramètre de chaque méthode est self, l’objet sur lequel elle agit. On appelle une méthode sur un objet à l’aide d’un point, et la Surface de pygame est transmise comme n’importe quel autre argument :

star.update()
star.draw(screen)

La boucle principale décrit maintenant ce qui se passe à chaque image : mettre à jour l’étoile, puis la dessiner. Dans les programmes pygame, les objets de jeu possèdent presque toujours ces deux méthodes, update et draw.

challenge icon

Défi

Moyen
  1. Ajoute une méthode update(self) à Star : elle ajoute self.speed à self.y et replace l’étoile à y = 0 dès que self.y dépasse 480.
  2. Ajoute draw(self, screen) : le cercle blanc de rayon 4, à (self.x, self.y).
  3. Dans la boucle, appelle star.update() et, après le remplissage, star.draw(screen).

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


star = Star(320, 0)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    star.y += star.speed
    if star.y > 480:
        star.y = 0

    screen.fill((20, 22, 40))
    pygame.draw.circle(screen, (255, 255, 255), (star.x, star.y), 4)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Sprites et images

Entraînez-vous par vous-même : Playground Pygame