OOP aliens met een class om de aliens op ruitjespapier te zetten terug naar de inleiding
De bewegende aliens op het ruitjespapier
zie ook de alien die zich door boxen op en neer beweegt
de schets maakt gebruik van de class Aliens en Ruitjes
Aliens vreemd0;
Aliens vreemd1;
Aliens vreemd2;
Ruitjes ruiten;
float x;
float y;
float nx;
float ny;
float i;
//Omdat nu x, y, nx en ny in draw in translate komen moeten de variabelen
//als global worden gedeclareerd!
void setup() {
// size(960, 540);
fullScreen();
x = width/2;
y = height/2;
nx = height/30;
ny = height/30;
ruiten = new Ruitjes(nx, x, y);
vreemd0 = new Aliens(0, 0, nx, ny/3, 4, color(#D34DC4));
vreemd1 = new Aliens(x-8*nx, y, 3*nx, ny, 2, color(#89A8E5));
vreemd2 = new Aliens(x+10*nx, y, nx, ny, 1, color(#49DE33));
}
void draw() {
background(#E6FBFF);
//Met onderstaande code (regel .. t/m regel ) roteerd vreemd0 links boven
pushMatrix();
translate(x-20*nx, y-10*ny);
rotate(radians(i));
i++;
vreemd0.rectHoofd();
vreemd0.lichaam();
popMatrix();
vreemd1.arcHoofd();
vreemd1.lichaam();
vreemd2.rectHoofd();
vreemd2.lichaam();
ruiten.display();
vreemd2.heenEnTerug();
vreemd1.opEnNeer();
}
void keyPressed() {
if (key == 's') {
noLoop();
}
if (key == 'r') {
loop();
}
}
Aliens class
class Aliens {
float x;
float y;
float nx;
float ny;
color c;
float snelh;
Aliens(float x_, float y_, float nx_, float ny_, float snelh_, color c_) {
x = x_;
y = y_;
nx = nx_;
ny = ny_;
c = c_;
snelh = snelh_;
}
void arcHoofd() {
beginShape();
{
vertex(x-nx/2, y); //1
vertex(x-nx/2, y-ny); //2
vertex(x-2.5*nx, y-3*ny); //3
vertex(x-2.5*nx, y-4*ny); //4
vertex(x-nx/2, y-2*ny); //5
vertex(x, y-2.5*ny); //6
vertex(x+nx/2, y-2*ny); //7
vertex(x+2.5*nx, y-4*ny); //8
vertex(x+2.5*nx, y-3*ny); //9
vertex(x+nx/2, y-ny); //10
vertex(x+nx/2, y); //11
endShape(CLOSE);
}
fill(0, 0, 255);
//ogen
ellipse(x-nx/2, y-3*ny, nx/2, ny);
ellipse(x+nx/2, y-3*ny, nx/2, ny);
//mond
fill(255, 255, 0);
rectMode(CENTER);
rect(x, y-5*ny/3, 1.5*nx, ny/4);
fill(255, 0, 0);
//schedel
arc(x, y-3*ny, 3*nx, 6*nx, radians(180), radians(360));
}
void rectHoofd() {
fill(250, 100, 0);
//--------------------hoofd 2-----------------------
beginShape();
{
vertex(x-nx/2, y-ny); //1
vertex(x-1.5*nx, y-3*ny); //2
vertex(x-2.5*nx, y-3*ny); //3
vertex(x-2.5*nx, y-4*ny); //4
vertex(x-1.5*nx, y-4*ny); //5
vertex(x-1.5*nx, y-5*ny); //6
vertex(x-nx/2, y-6*ny); //7
vertex(x+nx/2, y-6*ny); //8
vertex(x+1.5*nx, y-5*ny); //9
vertex(x+1.5*nx, y-4*ny); //10
vertex(x+2.5*nx, y-4*ny); //11
vertex(x+2.5*nx, y-3*ny); //12
vertex(x+1.5*nx, y-3*ny); //13
vertex(x+nx/2, y-ny); //14
endShape(CLOSE);
}
fill(0, 0, 255);
//ogen
ellipse(x-nx, y-4.5*ny, nx/2, ny);
ellipse(x+nx, y-4.5*ny, nx/2, ny);
//neus
fill(255, 0, 0);
triangle(x-nx/2, y-3*ny, x, y-4*ny, x+nx/2, y-3*ny);
//mond
fill(255, 255, 0);
rectMode(CENTER);
rect(x, y-2.5*ny, 2*nx, ny/4);
fill(255, 200, 0);
//hals
quad(x-1.5*nx, y, x-nx/2, y-ny, x+nx/2, y-ny, x+1.5*nx, y);
}
void lichaam() {
fill(c);
beginShape();
{
vertex(x-1.5*nx, y+7*ny); //1
vertex(x-2.5*nx, y+2.5*ny); //2
vertex(x-nx, y+ny); //3
vertex(x-4.5*nx, y); //4
vertex(x+4.5*nx, y); //5
vertex(x+nx, y+ny); //6
vertex(x+2.5*nx, y+2.5*ny); //7
vertex(x+1.5*nx, y+7*ny); //8
vertex(x, y+3*ny); //9
endShape(CLOSE);
}
fill(255, 0, 0);
rectMode(CENTER);
rect(x, y+ny, 2*nx, ny/4);
}
void heenEnTerug() {
x = x + snelh;
if (x > width || x < 0) {
snelh = snelh *-1;
}
}
void opEnNeer() {
y = y + snelh;
if (y > height || y < 0) {
snelh = snelh *-1;
}
}
}