xxxxxxxxxx
143
let sneeuwvlokken = [];
let kerstwens; // variabele om de tekst in op te slaan
let paksneeuw; // variabele om de sneeuwlaag in op te slaan
let geluid;
let font = "BerkshireSwash-Regular.ttf";
function preload() {
font = loadFont(font);
// soundFormats('wav');
geluid = loadSound("bel2.wav");
}
function setup() {
createCanvas(windowWidth, windowHeight);
background(0);
fill(255);
noStroke();
paksneeuw = createGraphics(width, height); // maak een plaatje van gevallen sneeuw
// De stam van de boom
fill(139, 69, 19); // Bruin
rect(125, 540, 50, 50); // x, y, breedte, hoogte
stroke(0, 70, 0);
strokeWeight(7);
strokeJoin(ROUND);
fill(0, 128, 0); // Groen
triangle(50, 540, 150, 100, 250, 540); // top, links, rechts
noStroke();
// textAlign(CENTER, CENTER);
textSize(120); // Maak de tekst groot
fill(139, 0, 0, 255);
textFont(font);
text("Fijne kerst!", 220, height / 2); // Tekst en positie
kerstwens = createGraphics(width, height); // maak een kopie van het plaatje zonder sneeuw
kerstwens.image(get(), 0, 0);
}
function draw() {
image(kerstwens, 0, 0);
image(paksneeuw, 0, 0);
// voeg steeds een nieuw sneeuwvlokje toe
sneeuwvlokken.push(new Sneeuwvlok());
sneeuwvlokken.push(new Sneeuwvlok());
// verplaats en teken alle sneeuwvlokken
for (var s in sneeuwvlokken) {
sneeuwvlokken[s].verplaats();
sneeuwvlokken[s].teken();
let gevallen = sneeuwvlokken[s].sneeuwruimen();
if (gevallen == true) {
// voeg het gevallen vlokje toe aan het plaatje
// kerstwens.noStroke();
// kerstwens.fill(255);
// kerstwens.circle(sneeuwvlokken[s].posX, sneeuwvlokken[s].posY, sneeuwvlokken[s].grootte);
paksneeuw.noStroke();
paksneeuw.fill(255);
paksneeuw.circle(sneeuwvlokken[s].posX, sneeuwvlokken[s].posY, sneeuwvlokken[s].grootte);
// verwijder vlokje uit de lijst
sneeuwvlokken.splice(s, 1);
// laat soms een geluidje horen
if (random(200) < 1) {
geluid.play();
}
}
}
fill(180);
textSize(14);
textAlign(RIGHT, TOP);
textFont("Arial");
text(sneeuwvlokken.length + " sneeuwvlokken", width - 5, 5);
}
class Sneeuwvlok {
constructor() {
this.startX = random(windowWidth);
this.posX = this.startX;
this.posY = 0;
this.grootte = random(1, 5);
this.valsnelheid = random(1, 5);
this.xoff = random(3000);
}
verplaats() {
this.posX = this.startX + map(noise(this.xoff), 0, 1, -250, 250);
this.posY += this.valsnelheid;
this.xoff += 0.002;
}
teken() {
fill(255);
// kleur voor de vlokjes weer terugzetten
noStroke();
fill(255);
circle(this.posX, this.posY, this.grootte);
}
sneeuwruimen() {
if (this.posY > windowHeight - 5) {
return true;
}
// vind de kleur op de plek van deze sneeuwvlok
let c = kerstwens.get(this.posX, this.posY);
if (brightness(c) != 0) {
return true;
}
}
}
function mousePressed() {
let r = random(255); // Random rood
let g = random(255); // Random groen
let b = random(255); // Random blauw
let size = random(10, 30); // Random grootte
kerstwens.fill(r, g, b); // Gebruik de random kleuren
kerstwens.stroke(190, 166, 40);
kerstwens.strokeWeight(3);
kerstwens.circle(mouseX, mouseY, size); // Een bal op de muispositie
}
// sla 8 seconden van de animatie op als een gif-bestand als 's' wordt ingedrukt.
function keyPressed() {
if (key === 's') {
saveGif('sneeuw', 8);
}
}