Créer un objet

Exemple

Commençons directement par un exemple : Saisissez, analysez et testez ce code

1
from random import randint
2
3
class Balle():
4
    rayon = 20
5
    
6
    def __init__(self):
7
        self.x = randint(20,380)
8
        self.y = randint(20,380)
9
        self.transp = randint(20,50)
10
        self.couleur=(randint(0,255),randint(0,255),randint(0,255))
11
        self.vx,self.vy=randint(-3,3),randint(-3,3)
12
    
13
    
14
    def deplacement(self):
15
        if self.x < self.rayon or self.x>400-self.rayon:
16
            self.vx=-self.vx
17
        if self.y < self.rayon or self.y>400-self.rayon:
18
            self.vy=-self.vy
19
        self.x += self.vx
20
        self.y += self.vy
21
22
    def affichage(self):
23
        fill(self.couleur[0],self.couleur[1],self.couleur[2],self.transp)
24
        ellipse(self.x,self.y,self.rayon,self.rayon)
25
26
def setup():
27
    size(400,400)
28
29
def draw():
30
    background(255)
31
    balle.deplacement()
32
    balle.affichage()
33
34
# Création des variables globales
35
36
balle = Balle()

Ce code ne devrait pas vous poser de problème si vous avez su faire l'exercice 15 (le billard) dans l'activité animation.

Dans le code ci-dessus, on crée une classe (Balle) et une seule instance de cet objet (balle).

Complément

L'utilisation des objets prend tout son sens quand le programme crée une multitude d'objets identiques. Ces objets seront rangés dans une liste dès leur création.

Exemple

Saisissez, analysez et testez ce code :

1
from random import randint
2
3
class Balle():
4
    rayon = 20
5
    
6
    def __init__(self):
7
        self.x = randint(20,380)
8
        self.y = randint(20,380)
9
        self.transp = randint(20,50)
10
        self.couleur=(randint(0,255),randint(0,255),randint(0,255))
11
        self.vx,self.vy=randint(-3,3),randint(-3,3)
12
    
13
    
14
    def deplacement(self):
15
        if self.x < self.rayon or self.x>400-self.rayon:
16
            self.vx=-self.vx
17
        if self.y < self.rayon or self.y>400-self.rayon:
18
            self.vy=-self.vy
19
        self.x += self.vx
20
        self.y += self.vy
21
    def affichage(self):
22
        fill(self.couleur[0],self.couleur[1],self.couleur[2],self.transp)
23
        ellipse(self.x,self.y,self.rayon,self.rayon)
24
25
def setup():
26
    size(400,400)
27
    for i in range(1):
28
        liste_balles.append(Balle())
29
30
def draw():
31
    background(255)
32
    for balle in liste_balles:
33
        balle.deplacement()
34
        balle.affichage()
35
36
# Création des variables globales
37
liste_balles = []
38

ComplémentQuelques explications

Nous créons une liste liste_balles et nous rangeons des instances Balle dans cette liste.

Dans la fonction draw(), nous passons en revue tous les objets contenus dans la liste par une boucle for afin d'appeler leurs méthodes déplacement et affichage.

Exercice 25 : Asteroid killer

Pour ce dernier exercice, vous devrez faire un programme qui crée des balles animées sur demande sur le canevas.

  • au départ, il n'y a pas de balle.

  • en appuyant sur la touche +, vous ajouterez une balle animée

  • en appuyant sur la touche -, vous supprimerez la balle la plus ancienne ajoutée

  • chaque balle aura un rayon aléatoire entre 10 et 40

  • en cliquant sur une balle, celle-ci devra être supprimée (optionnel car un peu difficile)

  • aucune balle ne devra être immobile !

Indications :

  • La commande liste_balle.pop(i) permet de supprimer l'élément i d'une liste.

  • Vous vérifierez que la liste est non vide à l'aide de la fonction len() afin d'éviter de planter le programme si vous appuyez sur - alors qu'aucune balle ne se trouve sur le canevas.