Maintenant, nous allons insérer des obstacles dans l'écran.
Notre obstacle sera un rectangle dont on connait les positions des coins en haut à gauche et en bas à droite.
Pour simplifier l'écriture des coordonnées des points, on utilisera un type particulier qui s'appelle 'classe objet'.
La classe en question (PVector) est un couple de points (x, y).
On utilisera cette classe pour déclarer toutes les données qui fonctionnent en couple : dimEcran, pos, vit, dir, recA (=coin haut gauche) et recB (coin bas droit).
On accède facilement aux données en écrivant tout simplement dimEcran.x pour la largeur et dimEcran.y pour la hauteur
Notre programmation set modifié comme suit :
Avant la déclaration de setup et draw, on défini les variables globales :
- dimEcran = (1000, 800) : hauteur de l'écran,
- pos = (random(dimEcran.x),random(dimEcran.y)) : position de la balle au départ,
- dir = (1,1) : direction, >0 donc vers la droite,
- vit = (5, 5) : ça va plus vite que 1,
- recDim = (random(3,100),random(3,100)) : dimensions : pas plus de 100*100,
- recCoin = (random(dimEcran.x-recDim.x),random(dimEcran.y-recDim.y)) : coin en haut à gauche, pas en dehors de l'écran,
dans setup() :
- on défini la taille de l'écran, attention, il faut convertir les dimEcran.x et .y en entier avec int() comme ceci : size(int(dimEcran.x),int(dimEcran.y));
dans draw() :
- d'abord on teste pos pour savoir si on touche un bord.
- ensuite on reteste pos pour savoir si on touche l'obstacle.
- si il faut inverser la direction x ou y, on le fait.
- ensuite,on calcule la nouvelle position.
- et on dessine l'ellipse en position (posX, posY).
Remarquer l'usage des fonctions pour représenter le cadre de l'obstacle et changer la couleur. nous en utiliserons de + en +.