Ce code utilise les StringList, qui permettent une manipulation plus facile des Strings que les simples variables tableaux : la fonction shuffle() permet un mélange des Strings, et remove() permet de supprimer la String déjà utilisée.
Ça donne ceci en terme de code :
String petit="lion_en_societe.txt";
String moyen="loup_chien.txt";
String grand="mouche_lion.txt";
// la stringlist de textes récupérés
StringList mix;
//Les 3 textes sous forme de stringlist aussi
StringList t1;
StringList t2;
StringList t3;
void setup() {
size(600, 800);
}
void draw() {
// on recharge les textes à chaque tour, sinon la liste se vide au fur et à mesure
// remplir la première stringlist
t1=new StringList();
t1 = remplit(t1, petit);
// remplir la deuxième stringlist
t2=new StringList();
t2 = remplit(t2, moyen);
// remplir la troisième stringlist
t3=new StringList();
t3 = remplit(t3, grand);
background(255);
fill(0);
// initaliser la stringlist
mix = new StringList();
for (int i=0; i<2; i++) {
mix.append(portion(t1)); //appel de fonction
}
for (int i=0; i<3; i++) {
mix.append(portion(t2)); //appel de fonction
}
for (int i=0; i<5; i++) {
mix.append(portion(t3)); //appel de fonction
}
mix.shuffle();
// mettre ça dans un array traditionnel
String[] textes = mix.array();
// transformer l'array en une seule string
String resultat = join(textes, "\n");
textSize(10);
text(resultat, 20, 20, width-40, height);
// saveFrame();
noLoop();
}
String portion(StringList lequel) {
String retour="";
int phasard=int(random(lequel.size()));
retour=lequel.get(phasard);
// enlever l'élément utilisé de la StringList
lequel.remove(phasard);
println("la stringlist fait maintenant "+lequel.size());
return retour;
}
// remplit les stringlists avec les textes
StringList remplit(StringList s, String t) {
String[] t_complet=loadStrings(t);
for (int i=0; i<t_complet.length; i++) {
s.append(t_complet[i]);
}
println(t+" a maintenant "+s.size()+" lignes");
return s;
}
void keyPressed() {
loop();
}