Créer un objet
Exemple :
Commençons directement par un exemple : Saisissez, analysez et testez ce code
from random import randint
class Balle():
rayon = 20
def __init__(self):
self.x = randint(20,380)
self.y = randint(20,380)
self.transp = randint(20,50)
self.couleur=(randint(0,255),randint(0,255),randint(0,255))
self.vx,self.vy=randint(-3,3),randint(-3,3)
def deplacement(self):
if self.x < self.rayon or self.x>400-self.rayon:
self.vx=-self.vx
if self.y < self.rayon or self.y>400-self.rayon:
self.vy=-self.vy
self.x += self.vx
self.y += self.vy
def affichage(self):
fill(self.couleur[0],self.couleur[1],self.couleur[2],self.transp)
ellipse(self.x,self.y,self.rayon,self.rayon)
def setup():
size(400,400)
def draw():
background(255)
balle.deplacement()
balle.affichage()
# Création des variables globales
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 :
from random import randint
class Balle():
rayon = 20
def __init__(self):
self.x = randint(20,380)
self.y = randint(20,380)
self.transp = randint(20,50)
self.couleur=(randint(0,255),randint(0,255),randint(0,255))
self.vx,self.vy=randint(-3,3),randint(-3,3)
def deplacement(self):
if self.x < self.rayon or self.x>400-self.rayon:
self.vx=-self.vx
if self.y < self.rayon or self.y>400-self.rayon:
self.vy=-self.vy
self.x += self.vx
self.y += self.vy
def affichage(self):
fill(self.couleur[0],self.couleur[1],self.couleur[2],self.transp)
ellipse(self.x,self.y,self.rayon,self.rayon)
def setup():
size(400,400)
for i in range(1):
liste_balles.append(Balle())
def draw():
background(255)
for balle in liste_balles:
balle.deplacement()
balle.affichage()
# Création des variables globales
liste_balles = []
Complément : Quelques 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.