V predchádzajúcej lekcii sme programovali obrázky pomocou zabudovaných funkcií pre vykreslovanie 2D primitív -> síce o čosi zdĺhavejšie, než vo vašom preferovanom kresliacom programe - ale aspoň sa výsledok nehýbe ani nič navyše nerobí.
Tak sa to môže zdať zvonka na prvý pohľad.
Ale v skutočnosti hneď po inicializovaní aplikácie funkciou setup() sa následne 60x za sekundu prekreslí nanovo funkciou draw()- áno, presne ten istý obrázok.
Úloha: kreslenie kruhov na náhodnej pozícií s náhodnou farbou
V horespomínanom príklade používame ďaľšie zabudované funkcie: width, height, windowWidth a windowHeight
Takto definovaný sketch má vždy veľkosť obrazovky. Od teraz nemáme pod kontrolou, koľko pixlov budeme mať k dispozícií vopred - avšak taká je povaha webového prostredia, kde nevieme dopredu, či si váš sketch pozrie niekto na fullHD monitore alebo na smartphone.
AK si chceš pozrieť svoj sketch fullscreen: File -> Share -> Fullscreen
Vytvor sketch, kde pomocou mouseX/mouseY a pmouseX/pmouseY vieš kresliť, ako v kresliacom programe. Zapoj random() pre farby. Uprav program, aby zrkadlovo krelil to isté:
function setup() {
createCanvas(400, 400);
background(220);
}
function draw() {
ellipse(mouseX, mouseY, 50);
}
function setup() {
createCanvas(400, 400);
background(10);
}
function draw() {
noStroke();
fill(mouseY, 50);
ellipse(mouseX, mouseY, 50);
}
function mousePressed() {
background(10);
}
// https://editor.p5js.org/igor-kamil/sketches/JY_YJ4pqR
let posX
let posY;
function setup() {
createCanvas(400, 400);
background(10);
posX = 0;
posY = 200;
}
function draw() {
noStroke();
fill(255, 10);
ellipse(posX, posY, 40);
posX = posX + 1;
posY = posY - 0.3;
}
function mousePressed() {
background(10);
posX = 0;
posY = 200;
}
// https://editor.p5js.org/igor-kamil/sketches/mPmeIX4EP
let r, g, b;
function setup() {
createCanvas(windowWidth, windowHeight);
background(10);
r = random(255);
g = random(255);
b = random(255);
frameRate(10);
}
function draw() {
noStroke();
r = r + random(-10, 10);
g = g + random(-10, 10);
b = b + random(-10, 10);
fill(r, g, b);
ellipse(random(width), random(height), 50);
}
function mousePressed() {
background(10);
r = random(255);
g = random(255);
b = random(255);
}
// https://editor.p5js.org/igor-kamil/sketches/jTzHDAgHp
let posX, posY;
let R, G, B;
function setup() {
createCanvas(windowWidth, windowHeight);
posX = width / 2;
posY = height / 2;
R = random(255);
G = random(255);
B = random(255);
background(0);
}
function draw() {
fill(R, G, B, 100);
R += random(-10, 10);
G += random(-10, 10);
B += random(-10, 10);
stroke(R,G,B);
line(
posX + (pmouseX - width / 2),
posY + (pmouseY - height / 2),
posX + (mouseX - width / 2),
posY + (mouseY - height / 2),
);
line(
posX - (pmouseX - width / 2),
posY + (pmouseY - height / 2),
posX - (mouseX - width / 2),
posY + (mouseY - height / 2),
);
}
function mousePressed() {
background(0);
posX = width / 2;
posY = height / 2;
R = random(255);
G = random(255);
B = random(255);
}