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".
bekijk de rotaties van de tetrominos O en I
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();
}
}