Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2013-10-15 06:17:47 faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

faire un tour.



bonjour;

un problème sur un programme ,je voudrais que le rectangle tourne de 90° à chaque fois qu'il rencontre un bord.
Cela me semblais simple au premier abord ,mais j'y ais perdus mon latin et aussi mon cerveau.
Si quelqu'un a une idée elle serai la bienvenue.
Merçi.

Code (P5) :

float angle=90;
float x=200;
float y=200;
void setup()
{
size(500,500);
angle=1;
}
  void draw()
  {
    background(255);
    x=x+1;
    if(x>480)
    {
      angle=90;
      y=y+1;
      x=480;
      if(y>400)
      {
        angle=90;
        x=x-1;
        if(x<0)
        {
        angle=90;
        
        println(x);
        y=480;
      }
         }
    }
     translate(x,y);
   rotate(radians(angle));
  rect(0,0,50,20);
  }

Hors ligne

 

#2 2013-10-15 17:29:23 Re : faire un tour.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: faire un tour.



Bonjour,

Il faut essayer de penser cas général pour simplifier au maximum l'écriture :

float angle;
PVector position, vitesse;
int marge;

void setup() {
  size(500, 500);
  angle = 0;
  marge = 20;
  position = new PVector(width / 2, height / 2);
  vitesse = new PVector(1, 0);
  rectMode(CENTER);
}

void draw() {
  background(255);
  position.add(vitesse);
  if ((position.x < marge) || (position.x > width - marge) || (position.y < marge) || (position.y > height - marge)) {
    position.sub(vitesse);
    angle += PI / 2;
    vitesse.set(cos(angle), sin(angle));
  }
  translate(position.x, position.y);
  rotate(angle);
  rect(0, 0, 50, 20);
}

Hors ligne

 

#3 2013-10-16 04:29:15 Re : faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: faire un tour.



bonjour;

je te remercie pour ton programme;j'ai pratiquement tous compris ,sauf la ligne:
vitesse.set(cos(angle), sin(angle));
avec l'instruction set je vais regarder a quoi cela correspond.

merçi.

Hors ligne

 

#4 2013-10-16 21:36:11 Re : faire un tour.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: faire un tour.



La méthode set() de la classe PVector défini les composants de ce vecteur.
J'ai voulu trouver une relation entre les angles 0, PI / 2, PI, 3 * PI / 2 et la direction que prend le mobile
Le cosinus et le sinus remplissent ce rôle.

Hors ligne

 

#5 2013-10-18 04:16:00 Re : faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: faire un tour.



bonjour ;
Merci pour cette explication,une petite question existe t'il un debug pour processing ou un logiciel qui aurais un debug et sur lequel on pourrais transposer les programmes écrits avec processing.

Hors ligne

 

#6 2013-10-18 08:39:58 Re : faire un tour.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: faire un tour.



Il existe un autre IDE appelé Eclipse ( http://www.eclipse.org) fait pour coder en Java.
Il est extrêmement complet et tu peux intégrer Processing dedans :
http://processing.org/tutorials/eclipse/

Bon courage.

Hors ligne

 

#7 2013-10-18 11:27:01 Re : faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: faire un tour.



merci pour ta réponse, effectivement j'ai déjà vu ce nom de programme sur le net pour coder en java,je vais le télécharger pour voir ce que ça donne.Une question au sujet du constructeur,quant on construit une classe il faut mettre dans le setup ?ex:maBalle=New Balle(100,100);si Balle est la classe et ensuite la position d'un vecteur ou de plusieurs.
ex:maballe=new Balle(100,100,-1,1);
si dans la classeil y a:
class Balle
{
PVector position;
PVector deplacement;
pour voir si j'ai bien tous compris.

Hors ligne

 

#8 2013-10-18 11:44:34 Re : faire un tour.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: faire un tour.



Non, pas tout à fait. Dans l'exemple suivant lors de la déclaration de ta variable Balle est la classe.
Dans le setup() lorsque tu instancies la variable, c'est le constructeur de la classe qui est appelé. Dans l'exemple il y a surcharge de méthode.

Balle maBalle1, maBalle2; // Balle est la classe

void setup() {
  maBalle1 = new Balle(100, 100); // Balle est le constructeur de la classe
  maBalle2 = new Balle(100, 100, 1, -1);
}

class Balle {
  PVector position;
  PVector deplacement;

  Balle(float x, float y) {
    position = new PVector(x, y);
    deplacement = new PVector(1, 1);
  }

  Balle(float x, float y, float u, float v) {
    position = new PVector(x, y);
    deplacement = new PVector(u, v);
  }
}

Hors ligne

 

#9 2013-10-19 05:03:17 Re : faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: faire un tour.



bonjour

oui je vois ;donc il faut mieux mettre les informations concernant la classe balle dans le constructeur;
ex: Balle(float x, float y,float dx,float dy) {
    position = new PVector(50, 50);
    deplacement = new PVector(-1, 1);
par exemple.
  }
d'autre part es t'il possible de faire un tableau avec des vecteurs
ex:float [] PVector balle;
Je suis allez sur le site d'eclispe,mais je ne sais pas quel programme il me faut ;il y en a une dizaine qui ont
différentes utilisation, suivant les besoins ,mais je n'ais pas su lequel choisir.
merci.

Hors ligne

 

#10 2013-10-19 06:34:46 Re : faire un tour.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: faire un tour.



C'est encore un peu confus pour toi, soit tu initialises par défaut tes variables dans ton constructeur, et dans ce cas là tu n'as pas besoin de paramètre dans cette méthode :

Balle() {
  position = new PVector(50, 50);
  deplacement = new PVector(-1, 1);
}

Soit tu initialises les variables avec les paramètres  :

Balle(float x, float y, float dx, float dy) {
  position = new PVector(x, y);
  deplacement = new PVector(dx, dy);
}

Oui, tu peux faire des tableaux de de classe, mais la notation est la suivante :

PVector[] balle;

C'est bien de poser des questions tant que tu n'as pas tout compris. La pédagogie est l'art de la répétition.

Dans le lien que j'ai indiqué, il est marqué qu'il faut :
Eclipse IDE for Java Developers

Dernière modification par Mushussu (2013-10-19 06:44:01)

Hors ligne

 

#11 2013-10-19 09:31:08 Re : faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: faire un tour.



c'est encore très flou;je regarde des programmes et je vois qu'il existe différentes façons d'initialiser le constructeur,j'en ai essayez certaines mais je retombe toujours sur le problème que si je ne mets pas de valeurs dans la ligne qui se trouve dans le setup :
ex:balle=new PVector(100,100,-1,1)+d'autres si nécessaire, j'ai toujours  une erreur qui m'indique qu'il manque quelque chose dans la ligne citée  ci-dessus .C'est pourquoi je ne comprends pas comment faire autrement et si il y a une surcharge  je ne sais pas comment faire pour régler le problème(ou les surcharges n'ont pas de conséquences sur le bon déroulement du programme) .
merci pur tous tes conseils.

Hors ligne

 

#12 2013-10-19 11:10:06 Re : faire un tour.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: faire un tour.



Regarde ici :
http://processing.org/reference/PVector.html

Dans le paragraphe constructor, il y a trois possibilités pour initialiser un PVector.
Dans ton setup :

setup() {
v1 = new PVector();
v2 = new PVector(100, 200);
v3 = new PVector(100, 200, 300);
}

Les trois façons sont valides, il y a surcharge de méthodes avec 0, 2, ou 3 paramètres. Dans la classe PVector

Dans tes propres classes c'est toi qui décide du nombre de paramètres. Dans celles existantes, c'est précisé normalement dans les aides.

Hors ligne

 

#13 2013-10-19 12:01:51 Re : faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: faire un tour.



Oui très bien pour les vecteurs,mais je parlais de la ligne,qui se trouve dans le setup j'e t'envoi un petit programme

Triangle1 montriangle;
float c,s;
void setup()
{
   size(1000, 500);
  montriangle=new Triangle1(100,100,250,250,250,100,c,s); // cette ligne là; si je ne mets pas le bon nombres 
// de paramètres ici(c'est à dire le nbs d'èlèments qui se trouvent sous la ligne(float,float,ect)  il me renvoi des //erreurs , ça doit être comme ça ? ou ça peut être différent?
}
void draw()
{
  background(255);
montriangle.dessine();
montriangle.bouge();
}
class Triangle1{
PVector position1;
PVector position2;
PVector position3;
PVector deplacement;
float c,s;
  Triangle1(float x, float y,float xa,float ya,float xb,float yb,float dx,float dy ) {//cette ligne là:
    position1=new PVector(x,y);
   position2=new PVector(xa,ya);
   position3=new PVector(xb,yb);
deplacement=new PVector(dx,dy);
c=cos(0.02);
s=sin(0.02);
       }
  void dessine()
  {
  triangle(position1.x,position1.y,position2.x,position2.y,position3.x,position3.y);
}
void bouge()
{
   position1.x+=c;
   position1.y+=s;
}
    }

Hors ligne

 

#14 2013-10-19 14:57:05 Re : faire un tour.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: faire un tour.



Tout à fait, il est nécessaire que le nombre de paramètre que tu passse dans l'initialisation de ta variable soit le même que celui de la classe.

Si tu souhaites mettre un nombre de paramètre différent, il est nécessaire de surcharger la méthode constructeur avec 0, 2, 6 etc… paramètres.

Hors ligne

 

#15 2013-10-21 04:36:13 Re : faire un tour.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: faire un tour.



Merci pour ta réponse, maintenant c'est beaucoup plus clair ,car c’étais surtout cette ligne qui me posait problème.Je ne comprenais pas exactement ce qu'il fallait mettre dedans.

merci.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025