// // 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); }