français
interlingua
 

Samtempe variigi la tri kolorojn

La principo

Ni jam vidis, ke oni povas variigi unu koloron per instrukcio for(). Do ni uzos tri instrukciojn for() por variigi la tri kolorojn.
La (sufiĉe simpla) ideo, kiun ni realigos, estas jena : en la komenco R kaj G havas la valoron 0, B varias ses fojojn dum ses iteracioj. Poste G ricevas la valoron 51 kaj B denove varias dum ses iteracioj. Poste G ricevas la valoron 102 kaj B denove varias ses fojojn. Kaj tiel plu, tiamaniere ke ĉiu ebla kombinaĵo estu fine provita.
La ĉi-suba desegnaĵo povas helpi al vi percepti la procedon. Ĉiu linio reprezentas iteracion, do unu rektangulon de iu koloro. La valoroj de R, de G kaj de B pligrandiĝas po 51. R ricevas 6 fojojn novan valoron, G ricevas 6 x 6 fojojn novan valoron, kaj B ŝanĝas sian valoron 6 x 6 x 6 fojojn.

 

Restas esprimi tion en Ĝavo. La solvo estas enigi la iteracion B en la iteracion G, kiu mem ensidos en la iteracio R. Tio rezultigas la jenon :

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

 

La tuta retprogramo estas do tiel verkita :

import java.awt.*;
public class apleto9 extends java.applet.Applet
{
   public void paint (Graphics g)
   {
   int absciso = 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(absciso,0,10,10);
            absciso+=12;
            }//for B
         }//for G
      }//for R
   }//paint
}

 

Kaj jen la rezulto :

La uzpreta kodo

Vi povas konstati, ke la retprogramo afiŝas tion, kion ni volis, sed ĉiuj rektanguloj estas sur la sama linio : ni ankoraŭ devas peti de la programo, ke ĝi regule komencu novajn liniojn. Tio estos la temo de nia venonta paŝo.