====== Comment gérer et dessiner des chaînes de caractères tapées "en live" sur le clavier, dans la fenêtre d'affichage ? ======
Ce programme est très largement inspiré de celui effectué par Alexandre Sauzedde en 2014 lors de son projet concernant un logo interactif.
Damien MUTI.
===== Description l'algorithme =====
Dans le programme suivant, nous allons montrer comment afficher en temps réel une chaine de caractère tapée au clavier, sur la fenêtre d'affichage. Le programme suivant permet:
* gérer les effacement de lettres
* d'afficher une images à chaque nouvelle lettre écrite. L'image affichée affichée correspond à la dernière lettre de la chaine de caractère. Cette image correspond à la dernière lettre tapée ou à la dernièr elettre de la chaine de caractère lorsque la touche d'effacement " ← " a été tapée.
===== Présentation du programme =====
Le programme se compose de 3 sous-sketch (permettant une lecture plus simple) :
* le sketch principal nommé "afficheChaineCaractere" qui contient //void setup()//, //void draw()//, //void keyPressed()//.
* La classe lettre dont les attributs sont une lettre, et une image associée à le lettre. Cette classe ne comporte qu'une méthode: "lPictoAffiche" qui permet d'afficher l'image associée à la lettre considérée.
* Une méthode nommée "testEtAfficheLettre" qui permet d'afficher l'image assocée à la dernière lettre de la chaine de caractère "name".
__**ATTENTION**__: Avant de lancer le programme il faut impérativement placer dans le dossier "data" du sketch toutes les images associées aux lettres.
Le code est le suivant:
__**afficheChaineCaractere :**__
PFont font;
//------------------------------------plein écran à l'ouverture du programme
boolean sketchFullScreen() {
return true;
}
String name = new String();
// variables globales
lettre a;
lettre b;
lettre c;
lettre d;
lettre e;
lettre f;
lettre g;
lettre h;
lettre i;
lettre j;
lettre k;
lettre l;
lettre m;
lettre n;
lettre o;
lettre p;
lettre q;
lettre r;
lettre s;
lettre t;
lettre u;
lettre v;
lettre w;
lettre x;
lettre y;
lettre z;
void setup(){
size(displayWidth, displayHeight);
//size (400,400);
noStroke();
a = new lettre ("a", loadImage("Chat.jpg"));
b = new lettre ("b", loadImage("PICT3579.JPG"));
c = new lettre ("c", loadImage("PICT3557.JPG"));
d = new lettre ("d", loadImage("PICT3592.JPG"));
e = new lettre ("e", loadImage("PICT3592.JPG"));
f = new lettre ("f", loadImage("PICT3592.JPG"));
g = new lettre ("g", loadImage("PICT3592.JPG"));
h = new lettre ("h", loadImage("PICT3592.JPG"));
i = new lettre ("i", loadImage("PICT3592.JPG"));
j = new lettre ("j", loadImage("PICT3592.JPG"));
k = new lettre ("k", loadImage("PICT3592.JPG"));
l = new lettre ("l", loadImage("PICT3592.JPG"));
m = new lettre ("m", loadImage("PICT3592.JPG"));
n = new lettre ("n", loadImage("PICT3592.JPG"));
o = new lettre ("o", loadImage("PICT3592.JPG"));
p = new lettre ("p", loadImage("PICT3592.JPG"));
q = new lettre ("q", loadImage("PICT3592.JPG"));
r = new lettre ("r", loadImage("PICT3592.JPG"));
s = new lettre ("s", loadImage("PICT3592.JPG"));
t = new lettre ("t", loadImage("PICT3592.JPG"));
u = new lettre ("u", loadImage("PICT3592.JPG"));
v = new lettre ("v", loadImage("PICT3592.JPG"));
w = new lettre ("w", loadImage("PICT3592.JPG"));
x = new lettre ("x", loadImage("PICT3592.JPG"));
y = new lettre ("y", loadImage("PICT3592.JPG"));
z = new lettre ("z", loadImage("PICT3592.JPG"));
// FONT
font = loadFont ("DIN-Medium-48.vlw");
textFont (font, 25);
background(255); // fond blanc
}
void draw(){
/// affiche l'image assocée à la dernière lettre de la chaine de caractère "name"
testEtAfficheLettre();
// Font syle
textSize(52);
smooth();
pushStyle();
textAlign(CENTER);
//fill(random(255), random(255), random(255), random(255)); Random Couleur
fill(170);
//text(name.toString(),width/2,640);
text(name,width/2,640);
popStyle();
}
//------------------------------------méthode effacer
void keyPressed(){
if(key == BACKSPACE){
if (name.length() > 0){
pushStyle();
fill(255);
//rect(0,0,width,height);
name = name.substring(0, name.length()-1); //effacer le dernier caractères (-1)
popStyle();
}
} else if(key != CODED) {
name += key;
}
// affiche l'image associée à la derière lettre affichée
}
__**class lettre:**__
class lettre {
/// attributs
String nom;
PImage lPicto;
/// constructeur
lettre(String name, PImage im) {
nom = name;
lPicto = im;
}
/// méthodes
void lPictoAffiche(){
pushStyle();
//fill(255);
//rect(0,0,width,height);
//popStyle();
image(lPicto, 0, 0, width,height);
}
}
__**méthode testEtAfficheLettre :**__
void testEtAfficheLettre(){
/// affiche l'image assocée à la dernière lettre de la chaine de caractère "name"
if (name.length() > 0){
// sélection de la dernière lettre de la chaine de caractère
char lastLettre = name.charAt(name.length()-1);
if (lastLettre =='a' || lastLettre == 'A') {
a.lPictoAffiche();
}
if (lastLettre=='b' || lastLettre == 'B') {
//fill(100, 60, 60) ; // remplissage rouge
b.lPictoAffiche();
}
if (lastLettre=='c' || lastLettre == 'C') {
c.lPictoAffiche();
}
if (lastLettre=='d' || lastLettre == 'D') {
d.lPictoAffiche();
}
if (lastLettre=='e' || lastLettre == 'E') {
e.lPictoAffiche();
}
if (lastLettre=='c' || lastLettre == 'F') {
c.lPictoAffiche();
}
if (lastLettre=='g' || lastLettre == 'G') { ////////////////////PROBLEME ???
d.lPictoAffiche();
}
if (lastLettre=='h' || lastLettre == 'H') {////////////////////PROBLEME ???
e.lPictoAffiche();
}
if (lastLettre=='i' || lastLettre == 'I') {////////////////////PROBLEME ???
f.lPictoAffiche();
}
if (lastLettre=='j' || lastLettre == 'J') {////////////////////PROBLEME ???
g.lPictoAffiche();
}
if (lastLettre=='k' || lastLettre == 'K') {////////////////////PROBLEME ???
h.lPictoAffiche();
}
if (lastLettre=='l' || lastLettre == 'L') {
i.lPictoAffiche();////////////////////PROBLEME ???
}
if (lastLettre=='m' || lastLettre == 'M') {
j.lPictoAffiche();////////////////////PROBLEME ???
}
if (lastLettre=='n' || lastLettre == 'N') {
k.lPictoAffiche();////////////////////PROBLEME ???
}
if (lastLettre=='o' || lastLettre == 'O') {
o.lPictoAffiche();
}
if (lastLettre=='p' || lastLettre == 'P') {
p.lPictoAffiche();
}
if (lastLettre=='q' || lastLettre == 'Q') {
q.lPictoAffiche();
}
if (lastLettre=='r' || lastLettre == 'R') {
r.lPictoAffiche();
}
if (lastLettre=='s' || lastLettre == 'S') {
s.lPictoAffiche();
}
if (lastLettre=='t' || lastLettre == 'T') {
t.lPictoAffiche();
}
if (lastLettre=='u' || lastLettre == 'U') {
u.lPictoAffiche();
}
if (lastLettre=='v' || lastLettre == 'V') {
v.lPictoAffiche();
}
if (lastLettre=='w' || lastLettre == 'W') {
w.lPictoAffiche();
}
if (lastLettre=='x' || lastLettre == 'X') {
x.lPictoAffiche();
}
if (lastLettre=='y' || lastLettre == 'Y') {
y.lPictoAffiche();
}
if (lastLettre=='z' || lastLettre == 'Z') {
z.lPictoAffiche();
}
}
else{ // si la chaine de caractère name est nulle (aucun caractère mémorisé)
pushStyle();
fill(255);
rect(0,0,width,height);
popStyle();
}
}