La structure de base
Commencer par enregistrer votre sketch ( nom générique donné aux programmes écrits dans Processing), sous le nom flappyFish.
Un dossier sera créé, dans lequel il y aura le fichier Processing (flappyFish.pyde).
Ce dossier est également accessible depuis l'interface de Processing ( Sketch/Afficher le dossier ).
Nous allons utiliser deux classes : fish
et pipes
Création des fichiers fish.py
et pipes.py
Cliquer sur le triangle d'ajout d'onglet. Créer un nouvel onglet et nommer le : Créer un nouvel onglet et nommer le : |
![]() | Nous avons donc 3 onglets |
Dans votre dossier, vous avez maintenant :
flappyFish.pyde
fish.py
pipes.py
et un fichier sketch.properties
Nous aurons également besoin de l'image du poisson..
Récupérer cette image et déposer la dans le dossier de votre sketch ( clic - droit et enregistrer l'image sous ) | ![]() |
Méthode : La fenêtre d'affichage
On utilise les deux fonctions de bases de Processing :
setup(),
qui permet d'initialiser le programme
draw()
, qui est une fonction qui s'exécute 60 fois par seconde ( d'où la possibilité de faire des animations)
Écrire ce code dans flappyFish
.
def setup():
size(640,320)#initialise une fenêtre de 640x320 pixels
def draw():
background(0, 153, 204)# affiche la fenêtre avec une couleur de fond
Nous sommes prêts à développer le programme
Méthode : La classe Fish
Dans cette classe, on définit des attributs qui localisent le poisson et qui permettent de gérer son déplacement
class Fish:
def __init__(self):
self.x = 50 #abscisse
self.y = 240 #ordonnée
self.r = 32 #taille
self.gravity = 0.6 #pesanteur
self.lift = -12 #acenseur
self.velocity = 0 #accélération
Et des méthodes :
Pour charger l'image :
def loadPic(self):
self.pic = loadImage("poisson.png")
Pour aller vers le haut :
def up(self):
self.velocity += self.lift
Pour afficher l'image :
def display(self):
image(self.pic, self.x, self.y)
Pour actualiser l'affichage et ne pas sortir de la fenêtre :
def update(self):
self.velocity += self.gravity
self.velocity *= 0.9
self.y += self.velocity
if (self.y >= height - self.r):
self.y = height - self.r
self.velocity = 0
elif (self.y <= 0):
self.y = 0
self.velocity = 0
Écrire tout cela dans
fish.py
Puis écrire le code ci-dessous dans
flappyFish
Vérifier que tout fonctionne
from fish import Fish
fish = Fish()
def setup():
size(640, 320)
fish.loadPic()
def draw():
background(0, 153, 204)
fish.update()
fish.display()
def keyPressed():
if (key == " "):
fish.up()
Méthode : La classe Pipe
Voici la classe :
Votre travail : Expliquer le rôle des attributs et des méthodes de cette classe
( vous commenterez le code pour l'expliquer )
class Pipe:
def __init__(self):
self.top = random(height) - 60
if self.top < 60:
self.top = 60
if self.top > height - 180:
self.top = height - 180
self.bottom = height - self.top - 120
self.x = width
self.w = 40
self.speed = 2
self.hilite = False
def display(self):
fill(0, 125, 0)
if self.hilite:
fill(255, 0, 0)
rect(self.x, 0, self.w, self.top)
rect(self.x, height - self.bottom, self.w, self.bottom)
def update(self):
self.x -= self.speed
def offscreen(self):
if (self.x < -self.w):
return True
else:
return False
def collidesWith(self, otherObject):
if ((otherObject.y < self.top) or (otherObject.y + otherObject.r > height - self.bottom)):
if ((otherObject.x + otherObject.r > self.x) and (otherObject.x < self.x + self.w)):
return True
else:
return False
Méthode : Le programme :
Compléter le programme flappyFish
from fish import Fish
from pipes import Pipe
fish = Fish()
pipes = []
def setup():
size(640, 320)
fish.loadPic()
pipe = Pipe()
pipes.append(pipe)
def draw():
background(0, 153, 204)
for i in range(len(pipes) - 1, -1, -1):
if pipes[i].offscreen():
pipes.pop(i)
if pipes[i].collidesWith(fish):
pipes[i].hilite = True
else:
pipes[i].hilite = False
pipes[i].update()
pipes[i].display()
fish.update()
fish.display()
if (frameCount % 100 == 0):
pipe = Pipe()
pipes.append(pipe)
def keyPressed():
if (key == " "):
fish.up()
Faites le fonctionner...et commenter le ...
N'hésitez pas à modifier les variables pour comprendre le programme.
En faisant quelques recherches sur Processing py , imaginer et réaliser de quoi faire un score