header st

 

class tetromino  "St".         ga naar de draaiende tetromino S animatie           terug naar de inleiding

 

class St extends Vormen { 
   
//argumenten van de constructor  
//1) grootte, 2) links/rechts, 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    
St(float n_, int lr_, int d_, float x_, float y_, float hoek_, color c1_, float sw_, color c2_) {  
 super();  
 n = n_;  
 lr = lr_; 
 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 == 0 && lr == 1) {vertex(-1.5*n,n);vertex(-1.5*n,0);vertex(-n/2,0);  vertex(-n/2,-n); 
                         vertex(1.5*n,-n);vertex(1.5*n,0); vertex(n/2,0);   vertex(n/2, n);}  
 if (d == 0 && lr == 0) {vertex(-n/2,n);  vertex(-n/2,0);  vertex(-1.5*n,0);vertex(-1.5*n,-n); 
                         vertex(n/2,-n);  vertex(n/2,0);   vertex(1.5*n,0); vertex(1.5*n,n);} 
 if (d == 1 && lr == 1) {vertex(0,0);     vertex(0,-n);    vertex(n,-n);    vertex(n,-2*n); 
                         vertex(3*n,-2*n);vertex(3*n,-n);  vertex(2*n,-n);  vertex(2*n, 0);}   
 if (d == 1 && lr == 0) {vertex(0,0);     vertex(0,-n);    vertex(-n,-n);   vertex(-n,-2*n); 
                         vertex(n,-2*n);  vertex(n,-n);    vertex(2*n,-n);  vertex(2*n, 0);}    
 if (d == 2 && lr == 1) {vertex(0,n);     vertex(0,0);     vertex(n,0);     vertex(n,-n); 
                         vertex(3*n,-n);  vertex(3*n,0);   vertex(2*n,0);   vertex(2*n, n);} 
 if (d == 2 && lr == 0) {vertex(0,n);     vertex(0,0);     vertex(-n,0);    vertex(-n,-n); 
                         vertex(n,-n);    vertex(n,0);     vertex(2*n,0);   vertex(2*n, n);}  
 if (d == 3 && lr == 1) {vertex(-n,n);    vertex(-n,0);    vertex(0,0);     vertex(0,-n); 
                         vertex(2*n,-n);  vertex(2*n,0);   vertex(n,0);     vertex(n, n);}  
 if (d == 3 && lr == 0) {vertex(n,n);     vertex(n,0);     vertex(0,0);     vertex(0,-n); 
                         vertex(2*n,-n);  vertex(2*n,0);   vertex(3*n,0);   vertex(3*n, n);}   
 if (d == 4 && lr == 1) {vertex(-n,2*n);  vertex(-n,n);    vertex(0,n);     vertex(0,0); 
                         vertex(2*n,0);   vertex(2*n,n);   vertex(n,n);     vertex(n, 2*n);} 
 if (d == 4 && lr == 0) {vertex(n,2*n);   vertex(n,n);     vertex(0,n);     vertex(0,0); 
                         vertex(2*n,0);   vertex(2*n,n);   vertex(3*n,n);   vertex(3*n, 2*n);}   
 if (d == 5 && lr == 1) {vertex(-3*n,2*n);vertex(-3*n,n);  vertex(-2*n,n);  vertex(-2*n,0); 
                         vertex(0,0);     vertex(0,n);     vertex(-n,n);    vertex(-n, 2*n);}  
 if (d == 5 && lr == 0) {vertex(-n,2*n);  vertex(-n,n);    vertex(-2*n,n);  vertex(-2*n,0); 
                         vertex(0,0);     vertex(0,n);     vertex(n,n);     vertex(n, 2*n);}    
 if (d == 6 && lr == 1) {vertex(-3*n,n);  vertex(-3*n,0);  vertex(-2*n,0);  vertex(-2*n,-n); 
                         vertex(0,-n);    vertex(0,0);     vertex(-n,0);    vertex(-n, n);} 
 if (d == 6 && lr == 0) {vertex(-n,n);    vertex(-n,0);    vertex(-2*n,0);  vertex(-2*n,-n); 
                         vertex(0,-n);    vertex(0,0);     vertex(n,0);     vertex(n, n);}  
 if (d == 7 && lr == 1) {vertex(-2*n,n);  vertex(-2*n,0);  vertex(-n,0);    vertex(-n,-n); 
                         vertex(n,-n);    vertex(n,0);     vertex(0,0);     vertex(0, n);} 
 if (d == 7 && lr == 0) {vertex(-2*n,n);  vertex(-2*n,0);  vertex(-3*n,0);  vertex(-3*n,-n); 
                         vertex(-n,-n);   vertex(-n,0);    vertex(0,0);     vertex(0, n);}    
if (d == 8 && lr == 1)  {vertex(-2*n,0);  vertex(-2*n,-n); vertex(-n,-n);   vertex(-n,-2*n); 
                         vertex(n,-2*n);  vertex(n,-n);    vertex(0,-n);    vertex(0, 0);} 
if (d == 8 && lr == 0)  {vertex(-2*n,0);  vertex(-2*n,-n); vertex(-3*n,-n); vertex(-3*n,-2*n); 
                         vertex(-n,-2*n); vertex(-n,-n);   vertex(0,-n);    vertex(0, 0);}  
 endShape(CLOSE);  
 popMatrix();  
 }  
}
 
voorbeeld schets met objecten van de class tetromino "St"     
de schets maakt ook gebruik van object methodes van de superclass "Vormen"
 

enkele toetsfuncties

toets 1 setup van de start situatie
toets 2 random kleuren van de tetromino's en de lijnen, lijndikte sw = 40 en alfa = 100
toets 3 random kleuren van de tetromino's en de lijnen, lijndikte sw = 40 en alfa = 200
toets s stopt, en met toets r start de animatie.
 
In de animatie is de  hoek van draaipunt 1 afgerond dit staat niet in de code.
 
 


Vormen [] vorm;  
float n; 
void setup()  { 
size(780,560); 
//fullScreen(); 
float x = width/2; 
float y = height/2; 
float n = height/12; 
float sw = 2; 
 
  vorm = new Vormen[12]; 
   
//argumenten van de constructor  
//1) grootte, 2) links/rechts, 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 St(n, 1, 6, x-3*n, y-2*n,  0, color(#083AFA,100),sw, color(0)); 
  vorm[1] = new St(n, 0, 3, x+3*n, y-2*n,  0, color(#083AFA,100),sw, color(0)); 
  vorm[2] = new St(n, 0, 8, x-3*n, y-2*n, 90, color(#3EFC05,100),sw, color(0)); 
  vorm[3] = new St(n, 1, 1, x+3*n, y-2*n,-90, color(#3EFC05,100),sw, color(0));   
  vorm[4] = new St(n, 0, 8, x,     y,      0, color(#FC0D05,100),sw, color(0));  
  vorm[5] = new St(n, 1, 1, x,     y,      0, color(#FC0D05,100),sw, color(0));  
  vorm[6] = new St(n, 1, 5, x,     y,      0, color(#FC0D05,100),sw, color(0)); 
  vorm[7] = new St(n, 0, 4, x,     y,      0, color(#FC0D05,100),sw, color(0)); 
  vorm[8] = new St(n, 0, 7, x-3*n, y+2*n,  0, color(#083AFA,100),sw, color(0)); 
  vorm[9] = new St(n, 1, 2, x+3*n, y+2*n,  0, color(#083AFA,100),sw, color(0)); 
  vorm[10] = new St(n,1, 1, x-3*n, y+2*n, 90, color(#3EFC05,100),sw, color(0)); 
  vorm[11] = new St(n,0, 4, x+3*n, y+2*n, 90, color(#3EFC05,100),sw, color(0)); 
} 
 
void draw()  { 
  background(#E6FBFF); 
 for (int i = 0; i< 12; i++)   
  {   
  vorm[i].display();   
  }   
   
  vorm[0].dpRotLi(vorm[0]);    
  vorm[1].dpRotRe(vorm[1]);    
  vorm[2].dpRotRe(vorm[2]);   
  vorm[3].dpRotLi(vorm[3]);   
  vorm[4].dpRotLi(vorm[4]);      
  vorm[5].dpRotRe(vorm[5]);     
  vorm[6].dpRotRe(vorm[6]);    
  vorm[7].dpRotLi(vorm[7]);       
  vorm[8].dpRotRe(vorm[8]);      
  vorm[9].dpRotLi(vorm[9]);   
  vorm[10].dpRotLi(vorm[10]);      
  vorm[11].dpRotRe(vorm[11]);  
} 
  
  void keyPressed() {      
    if (key == 's') {     
    noLoop();     
  }      
    if (key == 'r') {        
    loop();     
 }     
    if (key == '1') {           
    setup(); 
 }        
    if (key == '2') {     
     for (int i = 0; i< 12; i++)   
  {   
       vorm[i].c1 = color(random(0,200),random(0,255),random(0,255),100);  
       vorm[i].c2 = color(random(0,200),random(0,255),random(0,255),100);   
       vorm[i].sw = 40;   
  }    
 }  
    if (key == '3') {     
     for (int i = 0; i< 12; i++)   
  {   
       vorm[i].c1 = color(random(0,200),random(0,255),random(0,255),200);  
       vorm[i].c2 = color(random(0,200),random(0,255),random(0,255),200);   
       vorm[i].sw = 40;   
  }    
 } 
}