Annonce

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


#1 2017-12-06 11:10:15 draw with keyboard

cartide22
nouveau membre
Date d'inscription: 2017-12-06
Messages: 6

draw with keyboard



Bonjour,
je me permet de poster un message sur le forum car je bloque pour continuer mon code !
J'aimerai pouvoir créer des formes à partir du touché des touches de clavier.
j'ai réussit à faire ça, mais j'aimerai que mes formes se concentre puis à l'appuie de la touche espace change de place.
Je vous joint une photo http://codelab.fr/up/creativecoding-IDEA-1.jpg, enfaite j'ai envie de faire ça exactement. Quand j'appuye sur des touches le dessins se formes et pour changer de formes il faut appuyer sur la barre d'espace


J'en suis là pour l'instant : mais j'obtiens des formes trop aléatoire
Avez vous des idées ? connaissez vous une librairies js, p5 ?

var l = random(0, 50);
    fill(20);
   
    if (keyIsPressed) {
        if ((key == 'h') || (key == 'H')) {
       
            line(random(10, 500), random(210, 500), random(120, 500), random(120, 500));
           
        }
        if ((key == 'g') || (key == 'G')) {
            rect(random(0, 400), random(0, 400), l, l);
        }
        if ((key == 'j') || (key == 'J')) {
            triangle(random(0, 400), random(0, 400), random(0, 400), random(0, 400), random(0, 400), random(0, 400));
        }
        if ((key == 'c') || (key == 'C')) {
            bezier(random(0, 100), random(0, 100), 1, 1, 1, 1, 1, 1)
        }
        if ((key == 'p') || (key == 'P')) {
            rect(l, l, l, l);
        }
       

merci de votre aide
j'espère avoir été clair ..
Cordialement

Dernière modification par cartide22 (2017-12-07 12:22:07)

Hors ligne

 

#2 2017-12-07 11:07:02 Re : draw with keyboard

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

Re: draw with keyboard



Bonjour,

Pour réaliser ce que tu souhaites, il faut enregistrer les attributs des différentes formes que tu crées. Pour cela il est préférable d'utiliser les classes qui te permettent de manipuler cela avec aise.
Dans ma proposition ci-dessous, je fais appel à la notion d'héritage. Les lignes, rectangles et triangles sont des formes que l'on peut manipuler.

ArrayList<Forme> formes;

void setup() {
  size(800, 600);
  formes = new ArrayList<Forme>();
}

void draw() {
  background(255);
  for (Forme f : formes) {
    f.bouger();
    f.affichage();
  }
}

void keyPressed() {
  if ((key == 'h') || (key == 'H')) {
    formes.add(new Ligne());
  }
  if ((key == 'g') || (key == 'G')) {
    formes.add(new Rectangle());
  }
  if ((key == 'j') || (key == 'J')) {
    formes.add(new Triangle());
  }
  if (key == ' ') {
    for (Forme f : formes) {
      f.exploser();
    }
  }
}

class Forme {
  PVector position, vitesse;
  float vitesseAnglulaire;
  color couleur;

  Forme() {
    position = new PVector(0, 0);
    vitesse = new PVector(0, 0);
    vitesseAnglulaire = 0;
    couleur = color(floor(random(0, 256)), floor(random(0, 256)), floor(random(0, 256)));
  }

  void exploser() {
    vitesse.set(random(-5, 5), random(-5, 5));
    vitesseAnglulaire = random(-0.05, 0.05);
  }

  void bouger() {
    position.add(vitesse);
    vitesse.mult(0.99);
  }

  void affichage() {
  }
}

class Ligne extends Forme {
  PVector pointA, pointB;

  Ligne() {
    super();
    pointA = new PVector(random(10, 500), random(210, 500));
    pointB = new PVector(random(120, 500), random(120, 500));
  }

  void affichage() {
    stroke(couleur);
    pushMatrix();
    translate(position.x, position.y);
    line(pointA.x, pointA.y, pointB.x, pointB.y);
    popMatrix();
  }
}

class Rectangle extends Forme {
  PVector positionRect, taille;

  Rectangle() {
    super();
    positionRect = new PVector(random(0, 400), random(0, 400));
    taille = new PVector(random(0, 50), random(0, 50));
  }

  void affichage() {
    noStroke();
    fill(couleur);
    pushMatrix();
    translate(position.x, position.y);
    rect(positionRect.x, positionRect.y, taille.x, taille.y);
    popMatrix();
  }
}

class Triangle extends Forme {
  PVector pointA, pointB, pointC;

  Triangle() {
    super();
    pointA = new PVector(random(0, 400), random(0, 400));
    pointB = new PVector(random(0, 400), random(0, 400));
    pointC = new PVector(random(0, 400), random(0, 400));
  }

  void affichage() {
    noStroke();
    fill(couleur);
    pushMatrix();
    translate(position.x, position.y);
    triangle(pointA.x, pointA.y, pointB.x, pointB.y, pointC.x, pointC.y);
    popMatrix();
  }
}

Dernière modification par Mushussu (2017-12-07 11:12:28)

Hors ligne

 

#3 2017-12-07 12:54:33 Re : draw with keyboard

cartide22
nouveau membre
Date d'inscription: 2017-12-06
Messages: 6

Re: draw with keyboard



Super merci !!! ça fonctionne super bien !!!! par contre je n'arrive pas à le mettre dans mon Brackets en format .js vous savez si c'est possible ?
merci encore cela me donne une super base !
maintenant je vais essayer de faire comme la photo ^^

Hors ligne

 

#4 2017-12-07 16:34:07 Re : draw with keyboard

cartide22
nouveau membre
Date d'inscription: 2017-12-06
Messages: 6

Re: draw with keyboard



j'ai un petit problème ....
Je veux associer ces formes a des sons et quand on presse ENTER on puisse lire les sons associé aux formes sauf que maintenant le code des formes ne fonctionne plus ...
Processing me dit : The class forme does not exist ...

---------

ArrayList<Forme> formes;

import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;

Minim minim;
AudioPlayer jeff;

void setup() {
  size(800, 600);
  minim = new Minim(this);
  formes = new ArrayList<Forme>();
  jeff = minim.loadFile("jeff.mp3");
}

void draw() {
  background(255);
  for (Forme f : formes) {
    f.bouger();
    f.affichage();
  }
}

void keyPressed() {
  if ((key == 'h') || (key == 'H')) {
    formes.add(new Ligne());
  }
  if ((key == 'g') || (key == 'G')) {
    formes.add(new Rectangle());
  }
  if ((key == 'j') || (key == 'J')) {
    formes.add(new Triangle());
  }
  if (key == ' ') {
    for (Forme f : formes) {
      f.exploser();
  }
    if (keyCode == ENTER){
    for (Forme f : formes) {
      snip.loop(2);
  }
}

class Forme {
  PVector position, vitesse;
  float vitesseAnglulaire;
  color couleur;

  Forme() {
    position = new PVector(70, 0);
    vitesse = new PVector(50, 50);
    vitesseAnglulaire = 10;
   
  }

  void exploser() {
    vitesse.set(random(-40, 5), random(-2, 2));
    vitesseAnglulaire = random(-9, 5);
  }

  void bouger() {
    position.add(vitesse);
    vitesse.mult(0.5);
  }

  void affichage() {
  }
}

class Ligne extends Forme {
  PVector pointA, pointB;

  Ligne() {
    super();
    pointA = new PVector(random(10, 500), random(210, 500));
    pointB = new PVector(random(120, 500), random(120, 500));
  }

  void affichage() {
    stroke(couleur);
    pushMatrix();
    translate(position.x, position.y);
    line(pointA.x, pointA.y, pointB.x, pointB.y);
    popMatrix();
  }
}

class Rectangle extends Forme {
  PVector positionRect, taille;

  Rectangle() {
    super();
    positionRect = new PVector(random(0, 400), random(0, 400));
    taille = new PVector(random(0, 50), random(0, 50));
  }

  void affichage() {
    stroke(200);
    noFill();
    pushMatrix();
    translate(position.x, position.y);
    rect(positionRect.x, positionRect.y, taille.x, taille.y);
    popMatrix();
  }
}

class Triangle extends Forme {
  PVector pointA, pointB, pointC;

  Triangle() {
    super();
    pointA = new PVector(random(0, 400), random(0, 400));
    pointB = new PVector(random(0, 400), random(0, 400));
    pointC = new PVector(random(0, 400), random(0, 400));
  }

  void affichage() {
    stroke(153);
    noFill();
    pushMatrix();
    translate(position.x, position.y);
    triangle(pointA.x, pointA.y, pointB.x, pointB.y, pointC.x, pointC.y);
    popMatrix();
  }
}

}}


merci pour votre aide !!

Dernière modification par cartide22 (2017-12-07 16:34:51)

Hors ligne

 

#5 2017-12-07 20:55:19 Re : draw with keyboard

cartide22
nouveau membre
Date d'inscription: 2017-12-06
Messages: 6

Re: draw with keyboard



Savez vous comment je peux dessiner un arc de cercle avec ce principe de classe ?

Hors ligne

 

#6 2017-12-08 00:03:55 Re : draw with keyboard

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

Re: draw with keyboard



Il y avait des problèmes d'accolades.

ArrayList<Forme> formes;

import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.effects.*;
import ddf.minim.signals.*;
import ddf.minim.spi.*;
import ddf.minim.ugens.*;

Minim minim;
AudioPlayer jeff;

void setup() {
  size(800, 600);
  minim = new Minim(this);
  formes = new ArrayList<Forme>();
  jeff = minim.loadFile("jeff.mp3");
}

void draw() {
  background(255);
  for (Forme f : formes) {
    f.bouger();
    f.affichage();
  }
}

void keyPressed() {
  if ((key == 'h') || (key == 'H')) {
    formes.add(new Ligne());
  }
  if ((key == 'g') || (key == 'G')) {
    formes.add(new Rectangle());
  }
  if ((key == 'j') || (key == 'J')) {
    formes.add(new Triangle());
  }
  if ((key == 'k') || (key == 'K')) {
    formes.add(new ArcDeCercle());
  }
  if (key == ' ') {
    for (Forme f : formes) {
      f.exploser();
    }
  }
  if (keyCode == ENTER) {
    for (Forme f : formes) {
      //snip.loop(2);
    }
  }
}

class Forme {
  PVector position, vitesse;
  float vitesseAnglulaire;
  color couleur;

  Forme() {
    position = new PVector(70, 0);
    vitesse = new PVector(50, 50);
    vitesseAnglulaire = 10;
  }

  void exploser() {
    vitesse.set(random(-40, 5), random(-2, 2));
    vitesseAnglulaire = random(-9, 5);
  }

  void bouger() {
    position.add(vitesse);
    vitesse.mult(0.5);
  }

  void affichage() {
  }
}

class Ligne extends Forme {
  PVector pointA, pointB;

  Ligne() {
    super();
    pointA = new PVector(random(10, 500), random(210, 500));
    pointB = new PVector(random(120, 500), random(120, 500));
  }

  void affichage() {
    stroke(couleur);
    pushMatrix();
    translate(position.x, position.y);
    line(pointA.x, pointA.y, pointB.x, pointB.y);
    popMatrix();
  }
}

class Rectangle extends Forme {
  PVector positionRect, taille;

  Rectangle() {
    super();
    positionRect = new PVector(random(0, 400), random(0, 400));
    taille = new PVector(random(0, 50), random(0, 50));
  }

  void affichage() {
    stroke(200);
    noFill();
    pushMatrix();
    translate(position.x, position.y);
    rect(positionRect.x, positionRect.y, taille.x, taille.y);
    popMatrix();
  }
}

class Triangle extends Forme {
  PVector pointA, pointB, pointC;

  Triangle() {
    super();
    pointA = new PVector(random(0, 400), random(0, 400));
    pointB = new PVector(random(0, 400), random(0, 400));
    pointC = new PVector(random(0, 400), random(0, 400));
  }

  void affichage() {
    stroke(153);
    noFill();
    pushMatrix();
    translate(position.x, position.y);
    triangle(pointA.x, pointA.y, pointB.x, pointB.y, pointC.x, pointC.y);
    popMatrix();
  }
}

class ArcDeCercle extends Forme {
  PVector centre, rayon;
  float angleDebut, angleFin;

  ArcDeCercle() {
    super();
    centre = new PVector(random(0, 200), random(0, 200));
    rayon = new PVector(random(0, 200), random(0, 200));
    angleDebut = random(-PI, PI);
    angleFin = random(PI, TWO_PI);
  }

  void affichage() {
    stroke(153);
    noFill();
    pushMatrix();
    translate(position.x, position.y);
    arc(centre.x, centre.y, rayon.x, rayon.y, angleDebut, angleFin);
    popMatrix();
  }
}

Hors ligne

 

#7 2017-12-09 13:29:43 Re : draw with keyboard

cartide22
nouveau membre
Date d'inscription: 2017-12-06
Messages: 6

Re: draw with keyboard



merci pour votre aide

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017