L'IA m'a codée une autre IA

ReadyForYOURPLS
2022-12-05 01:25:05

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.

ReadyForYOURPLS
2022-12-05 01:28:54

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
}
}

ReadyForYOURPLS
2022-12-05 01:30:30

Ils pètent les plombs avec ces options :ouch:

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
}
}

ReadyForYOURPLS
2022-12-05 01:38:23

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
}
}

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.