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.
ga naar de draaiende tetromino S 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;
}
}
}