Parcourir une phrase lettre par lettre

Processing peut évidemment utiliser du texte comme un ensemble de données. On peut par exemple parcourir une phrase lettre par lettre.

Précédent | 12/15 | Suivant

Une phrase est une liste de lettres
On stocke une phrase dans Processing dans une variable de type "String".

String maphrase="Ceci est une phrase";

On peut afficher cette phrase avec la fonction text() :

text(maphrase, 10,10);

Mais on peut aussi accéder à chacun des caractères de cette String, avec charAt() par exemple :

text(maphrase.charAt(0),10,10);

Cette ligne de code affichera le caractère n°0 de la phrase, c’est-à-dire "C".

On peut cdonc faire un script simple pour afficher caractère par caractère cette phrase :

PFont mapolice;
int marges=30;
String maphrase="Ceci est un texte martyr";
int compteur=0;

void setup(){
 size(600,600);
 mapolice=createFont("Montserrat-bold",20);
 textFont(mapolice,240);
 textAlign(CENTER,CENTER);
}

void draw(){
 background(255);
 fill(0);
 text(maphrase.charAt(compteur),width/2,height/2);
 compteur++;
 if(compteur >= maphrase.length()){
  compteur=0;
 }
 noLoop();
}

void keyPressed(){
loop();
}

Une fonction pour faire une grille de lettres

Ce script comporte une fonction "grille_caracteres()" à qui on donne une phrase, un nombre de caractère dans la grille et une taille de caractère. De là, il affiche cette phrase en grille. Lorsque tout les caractères de la phrase ont été affiché, le code revient au première caractère de la phrase.

PFont mapolice;
int marges=30;
void setup(){
 size(800,600);
 mapolice=createFont("Montserrat-bold",20);
 textFont(mapolice,24);
}

void draw(){
 background(255);
 fill(0);
// dans les parenthèses :
// texte, nombre de lettre par ligne et colonne, taille du caractère
 grille_caracteres("Ceci est un texte martyr",60,10);
}

void grille_caracteres(String texte,int nb, int taille){
 int compteur=0;
 textSize(taille);
 textAlign(CENTER,CENTER);
 // calcul de l'espacement
float saut_x=(width-marges*2)/nb;
float saut_y=(height-marges*2)/nb;

// dessiner la grille avec un double boucle
for(float y=marges;y<=height-marges;y+=saut_y){
  for(float x=marges;x<=width-marges;x+=saut_x){
    text(texte.charAt(compteur),x,y);
    compteur++;
    if(compteur >= texte.length()){
     compteur=0;
    }
  }
}
}

Aller plus loin

Allez faire un tour dans Processing sur la documentation de String, et sur ce site sur la partie "Traitement du texte", qui contient un paquet de script avec lesquels chipoter.