» codelab : http://codelab.fr/accueil » Forum : Processing : http://codelab.fr/processing » Mon appli OOP marche avec une instance, mais pas avec deux !! : http://codelab.fr/3606 Ceci est la version imprimable d'un sujet du forum, pour retourner à la version complète : Mon appli OOP marche avec une instance, mais pas avec deux !! |
xly — 2012-09-24 23:31:58 |
Je joue avec Processing depuis un mois. Je cherche à écrire une petite appli de demo type Invader, donc avec 3 familles d'objets : les attaquants, les defenseurs et les missiles. La programmation Oop des attaquants et des défenseurs (je n'ai pas encore "oopisé" les missiles) marche mais seulement avec une instance, pas avec deux !!! Etrange. |
cgiles — 2012-09-25 08:10:28 |
qu'entends pas ne marche qu'avec une instance mais pas deux ? ils se superposent, n'affichent rien ? |
xly — 2012-09-25 10:58:15 |
@cgiles |
emoc — 2012-09-25 11:26:19 |
Salut xly et bienvenue,
Un copier-coller entre des balises [ code ] [ / code ] (il y a un petit bouton pour ça) ou en fichier joint |
xly — 2012-09-25 12:02:35 |
Après vérification, c'est la dernière instance qui s'affiche, mais pas les deux premières. Target myTar; Target myTwin; Target myTrois; void setup() { size(300, 600); myTar = new Target (10, 20, 5); myTwin = new Target(20, 30, 15); myTrois = new Target(30, 40, 25); } void draw () { myTar.movTarget(); myTwin.movTarget(); myTrois.movTarget(); } class Target { int tarx, tary, tarsz; color couleur; Target(int _tarx, int _tary, int _tarsz) { tarx= _tarx; tary =_tary; tarsz=_tarsz; couleur =color(125*int( random(0, 2)), 125*int( random(0, 2)), 125*int ( random(0, 2))); } void movTarget() { background(255); delay(50); tarx =int(random(150, 250)); tary=tary+4; if (tary >height) { tary=0; } fill(couleur); rect(tarx, tary, tarsz*2, tarsz); } } |
xly — 2012-09-25 14:05:10 |
J'ai avance de mon côte, en fait c'est une histoire de background qui effaçait alors qu'il ne devait pas. |
Makio135 — 2012-09-25 16:29:43 |
ha bah si tu mets background(0) dans ta classe au lieu alors qu'il devrait être dans le draw()... forcément tu verras que ta dernière instance |
cgiles — 2012-09-25 16:47:51 |
et au lieu de mettre un delay 50 dans tes objets, mets un frameRate(30); dans ton setup, ça réglera la fréquence d'image a 30 image par seconde |
xly — 2012-09-25 19:47:58 |
Merci cgiles et makio135. |