esperanto
interlingua
 

Faire varier les trois couleurs en même temps

Le principe

Nous avons vu que l'on peut faire varier une couleur en utilisant une boucle for(). Nous allons donc utiliser trois boucles for() pour faire varier les trois couleurs.
L'idée (assez simple) que nous allons mettre en œuvre est la suivante : au début R et G sont à 0, B fait ses six boucles. Puis G passe à 51 et B refait ses six boucles. Puis G passe à 102 et B refait ses six boucles. Et ainsi de suite, de manière que chaque combinaison ait été essayée.
Le dessin ci-dessous peut vous aider à visualiser le processus. Chaque ligne représente une boucle, donc un rectangle d'une certaine couleur. Les valeurs de R, de G et de B s'accroissent de 51 en 51. R change 6 fois de valeur, G change 6 x 6 fois de valeur, et B change 6 x 6 x 6 fois de valeur.

 

Reste à exprimer cela en java. La solution est d'imbriquer la boucle B dans la boucle G, qui elle-même sera imbriquée dans la boucle R. Cela donne ceci :

for (int R=0;R<256;R+=51)
   {
   for (int G=0;G<256;G+=51)
      {
      for (int B=0;B<256;B+=51)
         {
         ...
         }
      }
   }
}

 

L'applet entière est donc ainsi rédigée :

import java.awt.*;
public class applet9 extends java.applet.Applet
{
   public void paint (Graphics g)
   {
   int abscisse = 0;
   for (int R=0;R<256;R+=51)
      {
      for (int G=0;G<256;G+=51)
         {
         for (int B=0;B<256;B+=51)
            {
            g.setColor(new Color(R,G,B));
            g.fillRect(abscisse,0,10,10);
            abscisse+=12;
            }//for B
         }//for G
      }//for R
   }//paint
}

 

Et voici le résultat :

Le code prêt à l'emploi

Comme vous le voyez, l'applet affiche bien ce que nous lui avons demandé, mais tous les rectangles sont dessinés sur la même ligne : il faut encore demander au programme d'aller à la ligne. Ce sera l'objet de notre prochaine étape.