Bonjour je ne sais pas si ce sujet a déjà été présenté c'est donc pour cela que je m'adresse à vous.
Je cherche à réaliser, dans le cadre d'un projet de programmation d'un mini jeu, une onde (comme à la surface de l'eau) mais avec une infinité de perturbations. Après avoir essayé de réalisé le code par moi-même, je me suis rendu compte de plusieurs difficultés, que je n'ai pas réussi à surmonter. Tout d'abord, il faudrait que les ondes "partent" à intervalle régulier, donc j'ai essayer de faire partir une nouvelle onde dès que la première était arrivée à un certain point, cela fonctionne mais il est impossible de le répéter une infinité de fois...
Je voudrai donc savoir s'il quelqu'un a déjà essayé de faire ce projet et dans la mesure du possible de savoir comment il s'y est prit...
Nous voudrions que les perturbations s'arrêtent dès que l'on appuie sue un bouton play/pause par exemple et donc utiliser les boucles, mais je ne sais pas comment faire pour à chaque fois faire un départ différé, ...
Si quelqu'un a une idée, elle est la bienvenue !!
Voici le premier code que j'ai réalisé : (je préviens je suis grand débutant)
float x=200, y=200; float d=60; float e=60; float f=60; void setup(){ size(400,400); background(0); frameRate(15); smooth(); } void draw(){ onde(); } void onde(){ noFill(); stroke(75); strokeWeight(3); background(0); ellipse(x,y,d,d); d=d+10; }
Hors ligne
bonjour
regarde si c'est ce que tu veux.
float x=200, y=200; float d=60; float e=60; float f=60; void setup(){ size(400,400); background(0); frameRate(15); smooth(); } void draw(){ noFill(); stroke(75); strokeWeight(3); background(0); ellipse(x,y,d,d); d=d+10; if(d>400) { d=0; } }
Hors ligne
float x = 0; void setup() { size(400,400); } void draw() { background(0); noFill(); stroke(75); strokeWeight(3); x = x +5; if (x > width) { x = 0; } ellipse(width/2,height/2, x,x); } void keyPressed() { if(key=='p') { noLoop(); } if(key=='m') { loop(); } }
Hors ligne
Bonjour Merci beaucoup pour ces programmes très intéressants mais depuis nous avons trouvé comment faire. En revanche, nous nous sommes heurtés à plusieurs nouveau problème lié à fill(0) utiliser pour effacer les traits du cercle.
Ainsi nous aimerions régler plusieurs problèmes :
- Comment éviter le clignotement des traits lorsque que les ondes atteignent les bords qui correspondent au "redissement" du fond.
- Comment faire pour éviter que le cercle s’enlève et se dessine quand on clique sur play/pause ?
Voici le code (les éléments précédés des // sont des outils qui nous servent à la réalisation du projet) :
Merci d'avance!
Hors ligne
d’après ce que je vois,le programme repart de zéro quant vous cliquez sur la souris;je pense que c'est pour cette raison que l'onde disparaît ;mais je ne comprend pas trop ce que vous voulez avoir exactement?si vous voulez que l'onde disparaisse ou quelle reste quant vous cliquez sur la souris ?d'autre part la fonction fill sert pour le remplissage de forme; c'est à dire que quant l'onde grandit ,la fonction fill rempli de noire du centre en allant vers les bords du cercle;le fonction qui efface est le fonction background();
Hors ligne
Oui c'est un projet un peu compliqué J'ai bien compris la différence (fill et background) entre les deux mais pour le projet le résultat reste le même puisque quand l'onde grandie, çà efface ce qu'il y a à l’intérieur du cercle et donc par la même occasion, le fond !
En fait le but du projet et de réaliser un "jeu" musical. Chaque traits (les 10 représenterais une note (do, re, mi, ...) ainsi qu'une caisse claire et un boom. A l'aide de petites boules que l'on placeraient sur ces traits (avec un mode édition et suppression) qui seraient donc enregistrés a certains coordonnées, dès que l'on clique sur play, une onde se propage et dès qu'elle rencontre la boule joue la note de musique associée. Ainsi en plaçant plusieurs boules, on pourrais faire une sorte de mélodie.
Hors ligne
bonjour ;
Te faut il obligatoirement la souris pour ton jeu?car j'ai résolu ton problème ;mais avec les touches du clavier ;pour la souris je réussi à stopper l'onde sans que celle_ci disparaisse mais ça ne redémarre pas.Je te fais parvenir le script avec les touches,et dis moi si tu veux celui avec la souris?je vais encore réfléchir un peu pour voir pourquoi cela ne redémarre pas.
Hors ligne
je t'envoi le code avec la souris qui fonctionne avec bouton droit et bouton gauche .Regarde si çe te vas.
Hors ligne
pour le clignotement.
void onde() { //<>// fill(0); stroke(255); strokeWeight(3); ellipse(x, y, d, d); d=d+10; if(d>667){ d=60; } } //<>//
Hors ligne
Si tu veux utiliser un seul bouton de la souris tu peux aussi écrire çà
//variable globale boolean bouton = true; void mousePressed() { if (bouton == true) { noLoop(); bouton=false; } else { loop(); bouton=true; } }
Hors ligne