class tetromino "Tt" ga naar de draaiende tetromino T animatie terug naar de inleiding
class Tt extends Vormen {
//argumenten van de constructor
//1) grootte, 2) draaipunt, 3) x positie, 4) y positie,
//5) hoek 6) vormkleur, 7) lijndikte, 8) lijnkleur
// 1 2 3 4 5 6 7 8
Tt(float n_, int d_, float x_, float y_, float hoek_, color c1_, float sw_, color c2_) {
super();
n = n_; 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) {vertex(-n/2,n); vertex(-n/2,-0);vertex(-1.5*n,-0);vertex(-1.5*n,-n);
vertex(1.5*n,-n);vertex(1.5*n,0);vertex(n/2,0); vertex(n/2,n);}
if (d == 1) {vertex(0,0); vertex(0,-n); vertex(-n,-n); vertex(-n,-2*n);
vertex(2*n,-2*n);vertex(2*n,-n); vertex(n,-n); vertex(n,0);}
if (d == 2) {vertex(0,n); vertex(0,0); vertex(-n,0); vertex(-n,-n);
vertex(2*n,-n); vertex(2*n,0); vertex(n,0); vertex(n,n);}
if (d == 3) {vertex(n,n); vertex(n,0); vertex(0,0); vertex(0,-n);
vertex(3*n,-n); vertex(3*n,0); vertex(2*n,0); vertex(2*n,n);}
if (d == 4) {vertex(n,2*n); vertex(n,n); vertex(0,n); vertex(0,0);
vertex(3*n,0); vertex(3*n,n); vertex(2*n,n); vertex(2*n,2*n);}
if (d == 5) {vertex(-2*n,2*n);vertex(-2*n,n); vertex(-3*n,n); vertex(-3*n,0);
vertex(0,0); vertex(0,n); vertex(-n,n); vertex(-n,2*n);}
if (d == 6) {vertex(-2*n,n); vertex(-2*n,0); vertex(-3*n,0); vertex(-3*n,-n);
vertex(0,-n); vertex(0,0); vertex(-n,0); vertex(-n,n);}
if (d == 7) {vertex(-n,n); vertex(-n,0); vertex(-2*n,0); vertex(-2*n,-n);
vertex(n,-n); vertex(n,0); vertex(0,0); vertex(0,n);}
if (d == 8) {vertex(-n,0); vertex(-n,-n); vertex(-2*n,-n);vertex(-2*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 "Tt"
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 T animatie
In de animatie is de hoek van draaipunt 1 afgerond dit staat niet in de code.
Vormen [] vorm;
void setup() {
size(780,560);
//fullScreen();
float x = width/2;
float y = height/2;
float n = height/10;
float sw = 2;
vorm = new Vormen[12];
//argumenten van de constructor
//1) grootte, 2) draaipunt, 3) x positie, 4) y positie,
//5) hoek 6) vormkleur, 7) lijndikte, 8) lijnkleur
// 1 2 3 4 5 6 7 8
vorm[0] = new Tt(n, 8, x-3.5*n, y-n, 0, color(#07F0EA,100), sw, color(0));
vorm[1] = new Tt(n, 1, x-n/2, y-n, 0, color(#FC172A,100), sw, color(0));
vorm[2] = new Tt(n, 1, x+3.5*n, y-n, 0, color(#07F0EA,100), sw, color(0));
vorm[3] = new Tt(n, 3, x-3.5*n, y-n, 0, color(#85FF05,100), sw, color(0));
vorm[4] = new Tt(n, 6, x+3.5*n, y-n, 0, color(#85FF05,100), sw, color(0));
vorm[5] = new Tt(n, 6, x-3.5*n, y+n, 180, color(#85FF05,100), sw, color(0));
vorm[6] = new Tt(n, 3, x+3.5*n, y+n, 180, color(#85FF05,100), sw, color(0));
vorm[7] = new Tt(n, 1, x-3.5*n, y+n, 180, color(#07F0EA,100), sw, color(0));
vorm[9] = new Tt(n, 1, x+n/2, y+n, 180, color(#FC172A,100), sw, color(0));
vorm[8] = new Tt(n, 8, x+3.5*n, y+n, 180, color(#07F0EA,100), sw, color(0));
vorm[10] = new Tt(n, 8, x+n/2, y-n, 0, color(#FC172A,100), sw, color(0));
vorm[11] = new Tt(n, 8, x-n/2, y+n, 180, color(#FC172A,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].dpRotRe(vorm[3]);
vorm[4].dpRotLi(vorm[4]);
vorm[5].dpRotLi(vorm[5]);
vorm[6].dpRotRe(vorm[6]);
vorm[7].dpRotRe(vorm[7]);
vorm[8].dpRotLi(vorm[8]);
vorm[9].dpRotRe(vorm[9]);
vorm[10].dpRotLi(vorm[10]);
vorm[11].dpRotLi(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;
}
}
}