Les 13a - classes deel 2
Hier de presentatie uit de les: Javascript-les-13-classes-herhaling.pdf
hieronder de voorbeeldcode uit de les:
/*
-> We maken een classomschrijving om een noot te tekenen
-> Bij opstarten van de code verschijnen er een
x-aantal willekeurig op het scherm
-> Er is 50% kans op een kwartnoot, 30% kans op
een halve noot en 20% kans op een hele noot.
-> Bij klikken op de muis verschijnt een nieuwe noot op
de positie van de muis
*/
//array voor noten die we willen gebruiken
let noten = [];
//aantal noten dat initieel worden gemaakt
let aantalNoten;
//lijstje dat de nootnamen aangeeft
let nootNamen = ["kwart","half","heel"];
function setup() {
createCanvas(800,600);
background(255);
//random aantal noten
aantalNoten = floor(random(1,25));
//for-loop dat aantal noten maakt
//elke noot krijgt unieke x-y-positie
for (let i = 0; i < aantalNoten; i++) {
let newX = random(10,width-10);
let newY = random(10,height-10);
noten.push(new Noot(newX, newY));
}
}
function draw() {
//teken alle noten die in de array staan.
for (let i = 0;i < noten.length; i++) {
noten[i].teken();
}
}
//als de muis geklikt wordt, voeg een noot toe
//op de muispositie
function mousePressed() {
noten.push(new Noot(mouseX, mouseY));
}
//als je met de muis sleept, voeg een noot toe
//op de muispositie
function mouseDragged() {
noten.push(new Noot(mouseX, mouseY));
}
//de class met noot-informatie
class Noot {
//startX en startY komen mee vanaf het moment
//dat het object aangemaakt wordt
constructor(startX, startY) {
this.x = startX;
this.y = startY;
this.s = random(10,20);
//0 = kwart, 1 = half, 2 = heel
//type is default 0
this.type = 0;
let chance = random(100)
//30% kans op halve noot
if (chance >= 50 && chance < 80) {
this.type = 1;
}
//20% kans op kwartnoot
else if (chance >= 80) {
this.type = 2;
}
//laat zien welk type er gemaakt is.
console.log(nootNamen[this.type]);
}
teken() {
//default witte noot
noFill();
//als kwart of halve noot
//teken stok
if(this.type <= 1) {
line(this.x + this.s/2, this.y,this.x + this.s/2,this.y-this.s*3);
}
//als kwartnoot, maak zwart
if (this.type == 0) {
fill(0);
}
//teken de bol
ellipse(this.x,this.y,this.s);
}
}