This commit is contained in:
bach 2024-12-06 16:29:59 +01:00
parent e29a2b96c1
commit 724b700890

View File

@ -15,27 +15,46 @@ function degToRad(deg) {
// une loop ne peut pas fonctionner car l'image ne se rafraîchit pas entre les iteration de boucle // une loop ne peut pas fonctionner car l'image ne se rafraîchit pas entre les iteration de boucle
// for (let index = 0; index < array.length; index++) { // for (let index = 0; index < array.length; index++) {
// } // }
// Une classe est un object que l'on va cloner, on va créer des instances de bidule
class Bidule {
// le constructeur est appeler une fois au moment de new Bidule
constructor(r, x, y) {
// on definie les valeur de départ propre a chauqe instance
// 'this' correpsond a l'instance, autant de 'this' que d'instance
this.r = r;
this.x = x;
this.y = y;
this.a = 360;
this.vitesse = {
x:-2+Math.random()*4,
y:-2+Math.random()*4
}
}
// les methodes sont comme des fonction mais propre a chaque instance
bouge(){
this.x += this.vitesse.x;
this.y += this.vitesse.y;
this.dessine();
}
dessine(){
ctx.beginPath();
ctx.arc(this.x, this.y, this.r, 0, degToRad(this.a));
ctx.fill();
}
}
let pos = { let mesBidules = [];
x:50, for (let i = 0; i < 2000; i++) {
y:50, mesBidules.push(new Bidule(2 + Math.random()*4, Math.random()*canvas.width, Math.random()*canvas.height));
r: 20,
a: 0
} }
let monAnime = function(){ let monAnime = function(){
ctx.clearRect(0, 0, canvas.width, canvas.height); ctx.clearRect(0, 0, canvas.width, canvas.height);
// pos.x = pos.x +1; mesBidules.forEach(bidule => {
pos.x += 2; bidule.bouge();
// pos.x++; });
// pos.r++;
pos.a++;
ctx.beginPath();
ctx.arc(pos.x, pos.y, pos.r, degToRad(pos.a), degToRad(pos.a+180));
ctx.stroke();
// on relance la fonction a la prochaine frame
window.requestAnimationFrame(monAnime); window.requestAnimationFrame(monAnime);
} }