int numAgents = 1; // Nombre d'agents dans le système
Agent[] agents; // Tableau pour stocker les agents
float minDist = 20; // Distance minimale entre les agents
float maxDist = 50; // Distance maximale entre les agents
void setup() {
size(500, 500); // Définir la taille de la fenêtre
agents = new Agent[numAgents]; // Créer le tableau d'agents
for (int i = 0; i < numAgents; i++) {
agents[i] = new Agent(random(width), random(height)); // Initialiser chaque agent avec une position aléatoire
}
}
void draw() {
background(0); // Définir le fond en noir
for (int i = 0; i < numAgents; i++) {
PVector mouse = new PVector(mouseX, mouseY); // Récupérer la position de la souris
agents[i].move(mouse, agents); // Faire bouger chaque agent en fonction de la souris et des autres agents
agents[i].display(); // Afficher chaque agent
}
}
void mousePressed() {
// Ajouter un nouvel agent à la position de la souris
agents = (Agent[])append(agents, new Agent(mouseX, mouseY));
}
// Classe pour définir un agent
class Agent {
PVector position; // Stocker la position de l'agent
float speed = 2; // Vitesse de l'agent
float diameter = 10; // Diamètre de l'agent
// Constructeur pour initialiser l'agent
Agent(float x, float y) {
position = new PVector(x, y);
}
// Fonction pour faire bouger l'agent en fonction de la souris et des autres agents
void move(PVector mouse, Agent[] others) {
PVector dir = PVector.sub(mouse, position); // Calculer la direction vers la souris
float distToMouse = dir.mag(); // Calculer la distance entre l'agent et la souris
dir.normalize(); // Normaliser la direction pour obtenir une vitesse constante
if (distToMouse < minDist) {
// Si l'agent est trop proche de la souris, le répousser
dir.mult(-1);
} else {
// Sinon, le faire bouger dans la direction de la souris
dir.mult(speed);
}
// Vérifier la distance entre l'agent et les autres agents
for (int i = 0; i < others.length; i++) {
Agent other = others[i];
if (other != this) {
// Calculer la distance entre l'agent et l'autre agent
PVector dist = PVector.sub(position, other.position);
var distToOther = dist.mag();
if (distToOther > 0 && distToOther < minDist) {
// Si l'agent est trop proche de l'autre agent, le répousser
dir.add(PVector.mult(dist, -0.5));
} else if (distToOther > 0 && distToOther < maxDist) {
// Sinon, si l'agent est assez proche de l'autre agent, le faire se multiplier
agents = (Agent[])append(agents, new Agent(random(width), random(height)));
}
}
}
position.add(dir); // Appliquer la direction calculée à la position de l'agent
}
// Fonction pour afficher l'agent
void display() {
fill(255); // Remplir l'agent en blanc
ellipse(position.x, position.y, diameter, diameter); // Dessiner un cercle à la position de l'agent
}
}
C'est un système d'agent que j'élève. Je le modifie avec les caractéristiques de vie. Je bais bientôt ajouter des ressources pour qu'ils évoluent entre eux.
ceux qui veulent essayer, il suffit d'installer processing.
rentrez ce code avec 10 agents
int numAgents = 10; // Nombre d'agents dans le système
Agent[] agents; // Tableau pour stocker les agents
float minDist = 20; // Distance minimale entre les agents
float maxDist = 50; // Distance maximale entre les agents
void setup() {
size(500, 500); // Définir la taille de la fenêtre
agents = new Agent[numAgents]; // Créer le tableau d'agents
for (int i = 0; i < numAgents; i++) {
agents[i] = new Agent(random(width), random(height)); // Initialiser chaque agent avec une position aléatoire
}
}
void draw() {
background(0); // Définir le fond en noir
for (int i = 0; i < numAgents; i++) {
PVector mouse = new PVector(mouseX, mouseY); // Récupérer la position de la souris
agents[i].move(mouse, agents); // Faire bouger chaque agent en fonction de la souris et des autres agents
agents[i].display(); // Afficher chaque agent
}
}
void mousePressed() {
// Ajouter un nouvel agent à la position de la souris
agents = (Agent[])append(agents, new Agent(mouseX, mouseY));
}
// Classe pour définir un agent
class Agent {
PVector position; // Stocker la position de l'agent
float speed = 2; // Vitesse de l'agent
float diameter = 10; // Diamètre de l'agent
// Constructeur pour initialiser l'agent
Agent(float x, float y) {
position = new PVector(x, y);
}
// Fonction pour faire bouger l'agent en fonction de la souris et des autres agents
void move(PVector mouse, Agent[] others) {
PVector dir = PVector.sub(mouse, position); // Calculer la direction vers la souris
float distToMouse = dir.mag(); // Calculer la distance entre l'agent et la souris
dir.normalize(); // Normaliser la direction pour obtenir une vitesse constante
if (distToMouse < minDist) {
// Si l'agent est trop proche de la souris, le répousser
dir.mult(-1);
} else {
// Sinon, le faire bouger dans la direction de la souris
dir.mult(speed);
}
// Vérifier la distance entre l'agent et les autres agents
for (int i = 0; i < others.length; i++) {
Agent other = others[i];
if (other != this) {
// Calculer la distance entre l'agent et l'autre agent
PVector dist = PVector.sub(position, other.position);
var distToOther = dist.mag();
if (distToOther > 0 && distToOther < minDist) {
// Si l'agent est trop proche de l'autre agent, le répousser
dir.add(PVector.mult(dist, -0.5));
} else if (distToOther > 0 && distToOther < maxDist) {
// Sinon, si l'agent est assez proche de l'autre agent, le faire se multiplier
agents = (Agent[])append(agents, new Agent(random(width), random(height)));
}
}
}
position.add(dir); // Appliquer la direction calculée à la position de l'agent
}
// Fonction pour afficher l'agent
void display() {
fill(255); // Remplir l'agent en blanc
ellipse(position.x, position.y, diameter, diameter); // Dessiner un cercle à la position de l'agent
}
}
Ils pètent les plombs avec ces options
int numAgents = 10; // Nombre d'agents dans le système
Agent[] agents; // Tableau pour stocker les agents
float minDist = 10; // Distance minimale entre les agents
float maxDist = 15; // Distance maximale entre les agents
void setup() {
size(500, 500); // Définir la taille de la fenêtre
agents = new Agent[numAgents]; // Créer le tableau d'agents
for (int i = 0; i < numAgents; i++) {
agents[i] = new Agent(random(width), random(height)); // Initialiser chaque agent avec une position aléatoire
}
}
void draw() {
background(0); // Définir le fond en noir
for (int i = 0; i < numAgents; i++) {
PVector mouse = new PVector(mouseX, mouseY); // Récupérer la position de la souris
agents[i].move(mouse, agents); // Faire bouger chaque agent en fonction de la souris et des autres agents
agents[i].display(); // Afficher chaque agent
}
}
void mousePressed() {
// Ajouter un nouvel agent à la position de la souris
agents = (Agent[])append(agents, new Agent(mouseX, mouseY));
}
// Classe pour définir un agent
class Agent {
PVector position; // Stocker la position de l'agent
float speed = 2; // Vitesse de l'agent
float diameter = 10; // Diamètre de l'agent
// Constructeur pour initialiser l'agent
Agent(float x, float y) {
position = new PVector(x, y);
}
// Fonction pour faire bouger l'agent en fonction de la souris et des autres agents
void move(PVector mouse, Agent[] others) {
PVector dir = PVector.sub(mouse, position); // Calculer la direction vers la souris
float distToMouse = dir.mag(); // Calculer la distance entre l'agent et la souris
dir.normalize(); // Normaliser la direction pour obtenir une vitesse constante
if (distToMouse < minDist) {
// Si l'agent est trop proche de la souris, le répousser
dir.mult(-1);
} else {
// Sinon, le faire bouger dans la direction de la souris
dir.mult(speed);
}
// Vérifier la distance entre l'agent et les autres agents
for (int i = 0; i < others.length; i++) {
Agent other = others[i];
if (other != this) {
// Calculer la distance entre l'agent et l'autre agent
PVector dist = PVector.sub(position, other.position);
var distToOther = dist.mag();
if (distToOther > 0 && distToOther < minDist) {
// Si l'agent est trop proche de l'autre agent, le répousser
dir.add(PVector.mult(dist, -0.5));
} else if (distToOther > 0 && distToOther < maxDist) {
// Sinon, si l'agent est assez proche de l'autre agent, le faire se multiplier
agents = (Agent[])append(agents, new Agent(random(width), random(height)));
}
}
}
position.add(dir); // Appliquer la direction calculée à la position de l'agent
}
// Fonction pour afficher l'agent
void display() {
fill(255); // Remplir l'agent en blanc
ellipse(position.x, position.y, diameter, diameter); // Dessiner un cercle à la position de l'agent
}
}
int numAgents = 400; // Nombre d'agents dans le système
Agent[] agents; // Tableau pour stocker les agents
float minDist = 10; // Distance minimale entre les agents
float maxDist = 12; // Distance maximale entre les agents
void setup() {
size(1000, 700); // Définir la taille de la fenêtre
agents = new Agent[numAgents]; // Créer le tableau d'agents
for (int i = 0; i < numAgents; i++) {
agents[i] = new Agent(random(width), random(height)); // Initialiser chaque agent avec une position aléatoire
}
}
void draw() {
background(0); // Définir le fond en noir
for (int i = 0; i < numAgents; i++) {
PVector mouse = new PVector(mouseX, mouseY); // Récupérer la position de la souris
agents[i].move(mouse, agents); // Faire bouger chaque agent en fonction de la souris et des autres agents
agents[i].display(); // Afficher chaque agent
}
}
void mousePressed() {
// Ajouter un nouvel agent à la position de la souris
agents = (Agent[])append(agents, new Agent(mouseX, mouseY));
}
// Classe pour définir un agent
class Agent {
PVector position; // Stocker la position de l'agent
float speed = 2; // Vitesse de l'agent
float diameter = 2; // Diamètre de l'agent
// Constructeur pour initialiser l'agent
Agent(float x, float y) {
position = new PVector(x, y);
}
// Fonction pour faire bouger l'agent en fonction de la souris et des autres agents
void move(PVector mouse, Agent[] others) {
PVector dir = PVector.sub(mouse, position); // Calculer la direction vers la souris
float distToMouse = dir.mag(); // Calculer la distance entre l'agent et la souris
dir.normalize(); // Normaliser la direction pour obtenir une vitesse constante
if (distToMouse < minDist) {
// Si l'agent est trop proche de la souris, le répousser
dir.mult(-1);
} else {
// Sinon, le faire bouger dans la direction de la souris
dir.mult(speed);
}
// Vérifier la distance entre l'agent et les autres agents
for (int i = 0; i < others.length; i++) {
Agent other = others[i];
if (other != this) {
// Calculer la distance entre l'agent et l'autre agent
PVector dist = PVector.sub(position, other.position);
var distToOther = dist.mag();
if (distToOther > 0 && distToOther < minDist) {
// Si l'agent est trop proche de l'autre agent, le répousser
dir.add(PVector.mult(dist, -0.5));
} else if (distToOther > 0 && distToOther < maxDist) {
// Sinon, si l'agent est assez proche de l'autre agent, le faire se multiplier
agents = (Agent[])append(agents, new Agent(random(width), random(height)));
}
}
}
position.add(dir); // Appliquer la direction calculée à la position de l'agent
}
// Fonction pour afficher l'agent
void display() {
fill(255); // Remplir l'agent en blanc
ellipse(position.x, position.y, diameter, diameter); // Dessiner un cercle à la position de l'agent
}
}