Vous ne pouvez pas modifier cette page, pour les raisons suivantes :
Documentation:
== Le rendu == {{#ev:vimeo|118308699}} == Le code == <syntaxhighlight lang="java"> PVector vitesse; ArrayList<Balle> mesBalles; ChasseNeige[] armada; void setup() { size(640, 360); frameRate(120); noStroke(); // crée les 7 bouges rouges armada = new ChasseNeige[7]; for (int i = 0; i < armada.length; i++) { armada[i] = new ChasseNeige(i); } // définie le vecteur de déplacement des boules blanches vitesse = new PVector(0, 1); // crée la liste dynamique qui contiendra les boules blanches mesBalles = new ArrayList<Balle>(); } void draw() { background(0); // dessine les 7 boules rouges for (int i = 0; i < armada.length; i++) { armada[i].dessine(); } // ajoute trois boules blanches à chaque frame mesBalles.add(new Balle()); mesBalles.add(new Balle()); mesBalles.add(new Balle()); // dessine les boules blanches // et les supprime si elles sortent du cadre par le bas for (int i = mesBalles.size ()-1; i >= 0; i--) { Balle element = mesBalles.get(i); if (element.centre.y > height+element.rayon) mesBalles.remove(i); element.dessine(); } } // classe qui définit les boules blanches class Balle { PVector centre; int diametre, rayon; Balle() { diametre = int(random(20))+10; rayon = diametre/2; centre = new PVector(int(random(width)), -diametre); } void dessine() { fill(255); ellipse(centre.x, centre.y, diametre, diametre); // fait descendre les boules blanches vers le bas centre.add(vitesse); // teste la distance avec toutes les boules rouges for (int i = 0; i < armada.length; i++) { // si cette distance est plus petite que la somme des rayons blanc et rouge if (centre.dist(armada[i].centre) < rayon+armada[i].rayon) { // si le centre de la boule blanche // est à droite du centre de la boule rouge // alors on décale la boule blanche de 1px vers la droite if (centre.x >= armada[i].centre.x) centre.x++; // si le centre de la boule blanche // est à gauche du centre de la boule rouge // alors on décale la boule blanche de 1px vers la gauche else if (centre.x < armada[i].centre.x) centre.x--; } } } } // Classe qui définit les boules rouges class ChasseNeige { PVector centre; int diametre, rayon, decalage, posInit; ChasseNeige(int num) { diametre = 50; rayon = diametre/2; posInit = width/2; ; centre = new PVector(posInit, num*60); decalage = num * 10; } void dessine() { fill(255, 0, 0); ellipse(centre.x, centre.y, diametre, diametre); // les boules rouges sont déssinées suivant la fonction cosinus // les ajustements sont empiriques concernant la vitesse et l'amplitude centre.x = posInit + cos(radians(frameCount/4+decalage))*200; } } </syntaxhighlight> [[Catégorie:Processing]]
Résumé :
Modification mineure Suivre cette page
Annuler