//
// Created by Alban on 26/11/2024.
//
#include "simulation1.h"
void ecrire_json(Graphe *graphe, int compte) {
FILE *fichier = fopen("DATA/json/simulation.json", "w");
if (fichier == NULL) {
printf("Erreur lors de l'ouverture du fichier\n");
return;
}
// Début du fichier JSON
fprintf(fichier, "{\n");
fprintf(fichier, " \"ecosystem\": \"%s\",\n", graphe->ecosysteme);
fprintf(fichier, " \"nodes\": [\n");
// Ecrire les noeuds (les espèces)
int node_count = 0;
for (int i = 0; i < graphe->nbSommets; i++) {
espece e = graphe->tabEspece[i];
// Ignorer les espèces avec une population égale à 0
if ((int)e.population[compte] == 0) {
continue;
}
// Déterminer le type d'espèce
char *type_espece;
switch (e.type_espece) {
case 0:
type_espece = "Producteur primaire";
break;
case 1:
type_espece = "Consommateur primaire";
break;
case 2:
type_espece = "Consommateur secondaire";
break;
default:
type_espece = "Inconnu";
break;
}
// Emojis en fonction du type d'espèce
char *emoji;
if (e.type_espece == 0) emoji = "\U0001F331"; // Producteur primaire
else if (e.type_espece == 1) emoji = "\U0001F41F"; // Consommateur primaire
else emoji = "\U0001FAB0"; // Consommateur secondaire
// Écriture des informations de l'espèce
if (node_count > 0) {
fprintf(fichier, ",\n");
}
fprintf(fichier, " {\n");
fprintf(fichier, " \"id\": %d,\n", e.id);
fprintf(fichier, " \"name\": \"%s\",\n", e.name);
fprintf(fichier, " \"type\": \"%s\",\n", type_espece);
fprintf(fichier, " \"emoji\": \"%s\",\n", emoji);
fprintf(fichier, " \"description\": \"Description générique de %s.\",\n", e.name);
fprintf(fichier, " \"population\": %d,\n", (int)e.population[compte]);
fprintf(fichier, " \"couleur\": \"%s\",\n", e.couleur);
fprintf(fichier, " \"tauxC\": %.1f\n", e.tCroissance);
fprintf(fichier, " }");
node_count++;
}
fprintf(fichier, "\n ],\n");
// Début de la section des liens
fprintf(fichier, " \"links\": [\n");
int link_count = 0;
for (int i = 0; i < graphe->nbSommets; i++) {
for (int j = 0; j < graphe->nbSommets; j++) {
if (graphe->capacites[i][j] > 0 && (int)graphe->tabEspece[i].population[compte] > 0 && (int)graphe->tabEspece[j].population[compte] > 0) {
if (link_count > 0) {
fprintf(fichier, ",\n");
}
fprintf(fichier, " {\"source\": %d, \"target\": %d, \"relation\": %d}", i + 1, j + 1, graphe->capacites[i][j]);
link_count++;
}
}
}
// Fin de la section des liens
fprintf(fichier, "\n ]\n");
// Fin du fichier JSON
fprintf(fichier, "}\n");
// Fermeture du fichier
fclose(fichier);
}