Salut a tous
voila mon problème je cherche a faire un rectangle qui grossi de coin a coin en angle donc pour une fenêtre dans mon programme j'ai faite ce bout de code la le rectangle grossi belle et bien mais je bug sur le problème des limites a atteindre pour que mon rectangle s'ouvre a la bonne grandeur
quelqu'un pourrait t-il m'aider a trouver la solution a ce problème
int rectX = 250; int rectY = 250; int rectW = 0; int rectH = 0; int rectReachW = 75; int rectReachH = 150; int rectIncW = 1; int rectIncH = 1; boolean reach = false; void setup() { size(500,500); background(0,0,255); } void draw() { fill(255); stroke(3); rect(rectX,rectY,rectW,rectH); rectW += rectIncW; rectH += rectIncH; if(rectW == rectReachW && rectH == rectReachH){ reach = true; } else { reach = false; } println(reach); }
Merci
Danny
Hors ligne
Ton test est toujours faux car tes limites sont différentes et ton incrémentation et tes valeurs d'origine sont les mêmes.
Si tu souhaites que l'une ou l'autre mites sont atteintes utilise le OU logique. Il est préférable de tester la supériorité plutôt que l'égalité.
if (rectW > rectReachW || rectH > rectReachH) { reach = true; noLoop(); } else { reach = false; }
Hors ligne
Ok ses bon pour sa merci
mais le carrer grossi pas de coin en coin si les coter sont egaux cest bon mais si il est plus grand en hauteur sa fonctionne pas
jarrive pas a les faire arreter de grandir a une certaine limite (rectReachH et W)
Hors ligne
Il est difficile de comprendre grossir de coin en coi, je suppose que tu souhaites ceci :
int rectX = 250; int rectY = 250; int rectW = 0; int rectH = 0; int rectReachW = 75; int rectReachH = 150; int rectIncW = 1; int rectIncH = 2; boolean reach = false; void setup() { size(500, 500); background(0, 0, 255); rectMode(CENTER); } void draw() { fill(255); stroke(3); rect(rectX, rectY, rectW, rectH); rectW += rectIncW; rectH += rectIncH; if (rectW > rectReachW || rectH > rectReachH) { reach = true; noLoop(); } else { reach = false; } println(reach); }
Hors ligne
Oui ces en plein ca mais sans rect(CENTER)
Je te remercie beaucoup
danny
a+
Hors ligne
Il suffit juste de modifier la construction de ton rectangle :
rect(rectX - rectW / 2, rectY - rectH / 2, rectW, rectH);
Hors ligne
Pages: 1