Classe minima di un agente autonomo

Classe di un agente che si sposta casualmente a partire da un punto iniziale (partenza) e inverte la direzione quando supera i 185 pixel di distanza dal centro del canvas.

// width=300 height=300
let agente;
let centro;

function setup() {
    createCanvas(300, 300);
    centro = createVector(width/2, height/2);
    background(200);
    agente = new Agente(centro);
}

function draw() {
    agente.display();
}

// DEFINIZIONE DELLA CLASSE Agente
class Agente {
    constructor( partenza ) {
        this.pos = partenza.copy();          // proprietà
        this.vel = p5.Vector.random2D();
    }
    display() {                                 
        circle( this.pos.x,this.pos.y, 6 );  // visualizzazione

        if (this.pos.dist(centro) > 145) {   // aggiornamento
            this.vel.mult( -1 );
        }
        if (random() < 0.33) {
            this.vel.rotate( random(-0.4,0.4) );
        }
        this.pos.add( this.vel );
    }
}
class Agente {
    constructor( partenza ) {
        this.pos = partenza.copy();          // PROPRIETÀ
        this.vel = p5.Vector.random2D();
    }
    display() {                                 
        circle( this.pos.x,this.pos.y, 6 );  // VISUALIZZAZIONE

        if (this.pos.dist(centro) > 185) {   // AGGIORNAMENTO
            this.vel.mult( -1 );
        }
        if (random() < 0.33) {
            this.vel.rotate( random(-0.4,0.4) );
        }
        this.pos.add( this.vel );
    }
}  
if (this.pos.dist(centro) > 185) {    
    this.vel.mult( -1 );
}

Inverte i valori x e y di spostamento (e quindi la direzione) se la posizione dell'agente supera i 185 pixel dal centro del canvas.

if (random() < 0.33) {
    this.vel.rotate( random(-0.4,0.4) );
}

Con una probabilità del 33%, effettua una piccola rotazione casuale del vettore di spostamento.

this.pos.add( this.vel );

Applica lo spostamento.