====== 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();
  
  }
}