///+ Prefix linkto BasicCode1
//// Lines for set up Psychlops environment
#include <psychlops.h>
using namespace Psychlops;
///- Prefix linkto BasicCode1


///+ Main Routine
//// Psychlops runs at the first line of this function psychlops_main().
void psychlops_main() {
	
    ///+ 0 linkto basiccode3_1a
    ////Prepare global parameters
     const int maxrectnum = 200;
	 int rectnum = 100/*ID:rectnumber 25.0 200.0 25.0*/;
	 double rectsize = 3.0/*ID:dotsize 1.0 10.0 1.0*/;
     Psychlops::Rectangle rect[maxrectnum];
     double rectcolorR[maxrectnum];
     double rectcolorG[maxrectnum];
     double rectcolorB[maxrectnum];
    ///- 0 linkto basiccode3_1a

	 Canvas window(Canvas::window);

     ///+ 1 Initialize
     ////Initialize
     for(int i=0; i < rectnum; i++){
         ///+ 1.1 linkto basiccode3_1a
         ////set positions and sizes
         rect[i].set(rectsize, rectsize); //Set a size of rectangles.
         rect[i].centering();
         rect[i].shift((i - 0.5 * rectnum) * rectsize * 1.5/*ID:RectHGap 1.0 3.0 0.5*/,
                                        (i - 0.5 * rectnum) * rectsize * 1.5/*ID:RectVGap 1.0 3.0 0.5*/); //Move Rectangles to initial positions
         ///- 1.1 linkto basiccode3_1a

         ///+ 1.2
         ////set colors
         rectcolorR[i]=random(1.0) * 0.5/*ID:RGain 0.0 1.0 0.5*/; //Set R values. Note that "i" is converted to double-type.
         rectcolorG[i]=random(1.0) * 0.5/*ID:GGain 0.0 1.0 0.5*/; //Set G values. Note that "i" is converted to double-type.
         rectcolorB[i]=random(1.0) * 0.5/*ID:BGain 0.0 1.0 0.5*/; //Set B values. Note that "i" is converted to double-type.
         ///- 1.2

         }
    ///- 1 Initialize

    ///+ 2 linkto basiccode3_1a
    ////drawing objects
    while(!Keyboard::esc.pushed()){
        window.clear(Color::black);
        for(int i=0; i < rectnum; i++){
            rect[i].draw(Color(rectcolorR[i], rectcolorG[i], rectcolorB[i])); //draw objects by designated colors.
        }
        window.flip();
    }
    ///- 2 linkto basiccode3_1a

}
///- Main Routine

./3_1b.xap