header oit

Rechthoek                   bekijk de rotaties van de tetrominos O               terug naar de inleiding 

Met objecten van deze class kan je tetromino O (lengte = 2*n , breedte = 2*n) en tetromino I (lengte = 4*n , breedte = n) maken.

argumenten van de constructor
1) lengte n,  2) breedte h1, 3) draaipunt d, 4) x positie, 5) y positie, 6) hoek 7) vormkleur c1, 8) lijndikte sw, 9) lijnkleur c2

 

class Rechthoek extends Vormen {
//argumenten van de constructor 
//1) lengte, 2) breedte,   3) draaipunt, 4) x positie, 5) y positie,  
//6) hoek    7) vormkleur, 8) lijndikte, 9) lijnkleur
 
//constructor     1          2       3         4         5          6           7          8           9
  Rechthoek(float n_, float h1_, int d_, float x_, float y_, float hoek_, color c1_, float sw_, color c2_) {
    super();
    n = n_;
    h1 = h1_;
    d = d_;
    x = x_; 
    y = y_; 
    hoek = hoek_; 
    c1 = c1_;
    sw = sw_;
    c2 = c2_;
  }
 
  void display() {
    fill(c1);
    strokeWeight(sw); 
    stroke(c2); 
    pushMatrix();
    translate(x, y);
    rotate(radians(hoek));  
    beginShape(); 
    if (d == 1) {vertex(0, 0);      vertex(0, -h1);     vertex(n, -h1);    vertex(n, 0); }
    if (d == 2) {vertex(0, h1);     vertex(0, 0);       vertex(n, 0);      vertex(n, h1);}
    if (d == 3) {vertex(-n, h1);    vertex(-n, 0);      vertex(0, 0);      vertex(0, h1);}    
    if (d == 4) {vertex(-n, 0);     vertex(-n, -h1);    vertex(0, -h1);    vertex(0, 0);}
    if (d == 0) {vertex(-n/2, h1/2);vertex(-n/2, -h1/2);vertex(n/2, -h1/2);vertex(n/2, h1/2);}      
    endShape(CLOSE);
    popMatrix();
  }
}

 
voorbeeld met tetromino I en tetromino O      

De schets maakt gebruik van objecten van de class "Rechthoek"  en beweginsmethodes van de superclass "Vormen".

 
 

Vormen [] vorm; 
void setup()  { 
size(780,560); 
float x = width/2; 
float y = height/2; 
float n = height/10; 
 
int klvorm = #FC0015; 
int stroke = #050505; 
float sw = 6; 
 
  vorm = new Vormen[10];  
 //argumenten van de constructor 
//1) lengte, 2) breedte,   3) draaipunt, 4) x positie, 5) y positie,  
//6) hoek    7) vormkleur, 8) lijndikte, 9) lijnkleur  
 
//                           1   2   3    4     5     6         7           8          9 
  vorm[0] = new Rechthoek (2*n, 2*n, 4, x-2*n, y-n,   0, color(klvorm,50),  sw, color(stroke));  
  vorm[1] = new Rechthoek (n,   4*n, 1, x-2*n, y-3*n,90, color(#25A5F7,100),sw, color(stroke));  
  vorm[2] = new Rechthoek (2*n, 2*n, 1, x+2*n, y-n,   0, color(klvorm,50),  sw, color(stroke)); 
  vorm[3] = new Rechthoek (n,   4*n, 1, x-4*n, y+3*n, 0, color(#F7ED14,100),sw, color(stroke));   
  vorm[4] = new Rechthoek (2*n, 2*n, 4, x-n,   y+n,   0, color(klvorm,50),  sw, color(stroke)); 
  vorm[5] = new Rechthoek (2*n, 2*n, 1, x-n,   y,     0, color(#60F725,100),sw, color(stroke)); 
  vorm[6] = new Rechthoek (2*n, 2*n, 1, x+n,   y+n,   0, color(klvorm,50),  sw, color(stroke)); 
  vorm[7] = new Rechthoek (n,   4*n, 4, x+4*n, y+3*n, 0, color(#F7ED14,100),sw, color(stroke)); 
  vorm[8] = new Rechthoek (2*n, 2*n, 3, x,     y+n,   0, color(klvorm,50),  sw, color(stroke)); 
  vorm[9] = new Rechthoek (2*n, 2*n, 2, x,     y+n,   0, color(klvorm,50),  sw, color(stroke)); 
} 
 
void draw()  { 
  background(#E6FBFF); 
   
 for (int i = 0; i< 10; i++)   
  {   
  vorm[i].display();   
  }   
   
  vorm[0].dpRotRe(vorm[0]);    
  vorm[2].dpRotLi(vorm[2]);     
  vorm[4].dpRotLi(vorm[4]);       
  vorm[6].dpRotRe(vorm[6]);       
  vorm[8].dpRotRe(vorm[8]);      
  vorm[9].dpRotLi(vorm[9]);    
} 
 
void keyPressed() {      
  if (key == 's') {     
    noLoop();     
  }      
  if (key == 'r') {        
    loop();     
  }   
}