» codelab : http://codelab.fr/accueil » Forum : Processing : http://codelab.fr/processing » Variable dans une class : http://codelab.fr/4657 Ceci est la version imprimable d'un sujet du forum, pour retourner à la version complète : Variable dans une class |
duke duker — 2013-12-12 10:32:26 |
Bonjour! |
duke duker — 2013-12-12 10:33:39 |
Et le sketch de position par osc |
fabrice54 — 2013-12-13 06:18:52 |
bonjour Balle[]maballe=new Balle[10]; Boite[]maboite=new Boite[10]; void setup() { size(500,500); for(int i=0;i<10;i++) { maballe[i]=new Balle(random(width),random(height)); maboite[i]=new Boite(random(width),random(height)); } } void draw() { background(255); for(int i=0;i<10;i++) { maballe[i].display(); maballe[i].mouvement(); maballe[i].collision(); maboite[i].display(); maboite[i].mouvement(); maboite[i].collision(); } } class Balle{ PVector position; PVector mouvement; Balle(float px,float py){ position=new PVector(px,py); mouvement=new PVector(-1,1); } void display() { ellipse(position.x,position.y,20,20); } void mouvement() { position.add(mouvement); } void collision() { if(position.x<0||position.x>width) { mouvement.x=mouvement.x*-1; } if(position.y<0||position.y>height) { mouvement.y=mouvement.y*-1; } } } class Boite{ PVector position; PVector mouvement; Boite(float px,float py){ position=new PVector(px,py); mouvement=new PVector(1,-1); } void display() { rect(position.x,position.y,40,40); } void mouvement() { position.add(mouvement); } void collision() { if(position.x<0||position.x>width) { mouvement.x=mouvement.x*-1; } if(position.y<0||position.y>height) { mouvement.y=mouvement.y*-1; } } } |
duke duker — 2013-12-13 11:08:56 |
Merci! |
Mushussu — 2013-12-13 17:51:26 |
Bonjour, void update(PVector nouvellePosition) { oldPosition = Position; Position = nouvellePosition; } et dans le draw() : b.update(new PVector(moyX, moyY)); |
duke duker — 2013-12-13 18:40:32 |
En fait, les variables moyX et moyY viennent d'un autre sketch qui récupère la position d'un pointeur sur ma webcam. J'aimerais que ma Ball ait donc c'est valeurs pour position... Et ensuite arrivé à calculer la vitesse de cette balle en fonction de la dernière position... mais je ne suis pas du tout à l'aise avec les class |
Mushussu — 2013-12-14 10:38:02 |
J'ai bien compris ton souhait, c'est pour cela que je t'ai donné la réponse. vitesse = Position - oldPosition; |
fabrice54 — 2013-12-16 03:49:21 |
je te fais parvenir un programme de collision . int nb=10; ArrayList<Balle>balle; void setup() { size(800, 700); balle=new ArrayList<Balle>(); for (int i=0;i<nb;i++) { balle.add(new Balle(random(width), random(height), -1, 1)); } } void draw() { background(255); for (int i=0;i<balle.size();i++) { Balle b=balle.get(i); b.rebondir(); b.bouger(); } for (int i=0;i<balle.size();i++) { for (int j = i + 1 ; j < balle.size(); j++) { Balle b=balle.get(i); Balle c=balle.get(j); b.collision(c); } } for (int i=0;i<balle.size();i++) { Balle b=balle.get(i); b.afficher(); } } class Balle { PVector position; PVector deplacement; int rayon; boolean bing; Balle(float px, float py, float dx, float dy) { position = new PVector(px, py); deplacement=new PVector (dx, dy); rayon = 20; } void rebondir() { bing = false; if (position.x > width|| position.x < 0) { deplacement.x=deplacement.x*-1; } if (position.y >height||position.y<0) { deplacement.y= deplacement.y* -1; } } void bouger() { position.add(deplacement); } void collision(Balle j) { float distance = position.dist(j.position); if (distance<40) { bing = true; j.bing = true; if(mousePressed) { balle.add(new Balle(mouseX,mouseY, -2, 1)); } if(balle.size()>30) { balle.remove(10); } else { fill(0, 255, 255); } } } void afficher() { if (bing) { deplacement.x=deplacement.x*-1; deplacement.y=deplacement.y*-1; } ellipse(position.x, position.y, 40, 40); } } |