Annonce

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


#1 2014-06-27 15:00:43 Generative text

Mariron
nouveau membre
Date d'inscription: 2014-06-27
Messages: 1

Generative text



Bonjour,

Je dois générer du texte sur processing. J'y suis arrivée.
A présent je dois choisir un des mots généré avec ma souris et le stocker dans une base de donner à fin qu'il serve à écrire une autre phrase. Là je bloque. Auriez-vous des idées ?

Pour résoudre ce code, j'avais prévu de procéder en deux étapes :
1. Sélectionner le texte avec ma souris, puis relancer un random.
2. Stocker le texte choisie avec la souris dans une base de donnée et relancer un random.

Je n'arrive pas l'étape 1. Auriez vous des idées ?
Voici mon code dans son état actuel :

String[] ancre1 =
{"Boat","River","Tangerine","Marmalade skies","The sky","Parrot wing","Plasticine porters","Looking-glass ties","Dream","Trip","Dyeing stars smiling","Inletting the sky"};
String[] ancre2 =
{"Boat","River","Tangerine","Marmalade skies","The sky","Parrot wing","Plasticine porters","Looking-glass ties","Dream","Trip","Dyeing stars smiling","Inletting the sky"};
String[] ancre3 =
{"Boat","River","Tangerine","Marmalade skies","The sky","Parrot wing","Plasticine porters","Looking-glass ties","Dream","Trip","Dyeing stars smiling","Inletting the sky"};


PFont mapolice;



void setup()
{
 size(720,480);
 background(255);
 smooth();
 fill(0);
 
 mapolice = loadFont("ACaslonPro-Bold-48.vlw");
 textFont(mapolice,24);
 textAlign(CENTER);
 text ("Picture yourself...", width/2, height/2);
}

void draw()
{
  if (mousePressed)
 {
  background(255);
  text (ancre1[int(random(0,ancre1.length))] + " " + " " + " " +  
  ancre2[int(random(0,ancre2.length))]+ " " + " "+ " " + ancre3[int(random(0,ancre3.length))], width/2, height/2);
 } 
}

 void mouseDragged()
{
}

Merci de votre aide,

Marion

Dernière modification par Mariron (2014-06-27 15:01:23)

Hors ligne

 

#2 2014-06-28 09:35:24 Re : Generative text

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

Re: Generative text



Bonjour,

Je n'ai pas très bien saisi les différentes étapes, mais sélectionner un texet n'est pas trivial. Je n'ai pas connaissance de librairies réalisant cela.
De toute façon, il est toujours intéressant de réinventer la roue pour comprendre les mécanisme de la programmation.
Un text est contenu dans un rectangle. Pour trouver le rectangle tu peux utiliser : texWidth(), textAscent() et textDescent().
Donc voici le rectangle :

PFont maPolice;
String monTexte;

void setup() {
  size(600, 400);
  maPolice = loadFont("AlBayan-48.vlw");
  textFont(maPolice, 48);
  monTexte = "Bonjour chez vous";
}

void draw() {
  background(255);
  fill(0);
  text(monTexte, 100, 100);
  noFill();
  rect(100, 100 - textAscent(), textWidth(monTexte), textAscent() + textDescent());
}

L'idéal pour ton projet serait de réaliser une classe de mot permettant de tester la position du pointeur avec chaque instances de la classe.
Ma proposition :

PFont maPolice;
String monTexte;
Mot mot1;

void setup() {
  size(600, 400);
  maPolice = loadFont("AlBayan-48.vlw");
  monTexte = "Bonjour chez vous";
  mot1 = new Mot(100, 100, monTexte, maPolice, 48);
}

void draw() {
  background(255);
  mot1.affichage();
}

class Mot {
  PVector position, deplacement;
  float largeur, hauteur, decalage;
  int taillePolice;
  String texte;
  PFont police;
  boolean selection;

  Mot(int x, int y, String s, PFont _police, int _taillePolice) {
    position = new PVector(x, y);
    texte = s;
    police = _police;
    taillePolice = _taillePolice;
    textFont(police, taillePolice);
    largeur = textWidth(texte);
    hauteur = textAscent() + textDescent();
    decalage = textAscent();
    selection = false;
  }

  void affichage() {
    textFont(police, taillePolice);
    if (selection) {
      fill(255, 0, 0);
    } else {
      fill(0);
    }
    text(texte, position.x, position.y);
  }

  boolean estDansZone(int x, int y) {
    deplacement = new PVector(x - position.x, y - position.y);
    return ((x > position.x) && (x < (position.x + largeur)) && (y > (position.y - decalage)) && (y < (position.y - decalage + hauteur)));
  }
  
  void deplacement(int x, int y) {
    position.x = x - deplacement.x;
    position.y = y - deplacement.y;
  }
}

void mousePressed() {
  if (mot1.estDansZone(mouseX, mouseY)) {
    mot1.selection = true;
  }
}

void mouseDragged() {
  if (mot1.selection) {
    mot1.deplacement(mouseX, mouseY);
  }
}

void mouseReleased() {
  mot1.selection = false;
}

Hors ligne

 

#3 2014-06-29 13:20:34 Re : Generative text

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

Re: Generative text



Voilà une base de réflexion pour toi :

Dernière modification par Mushussu (2014-06-29 15:49:26)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024