diff --git a/README.md b/README.md new file mode 100644 index 0000000..c3a1686 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# Plague inc + +## Présentation + +De l'Anglais 'Plague' virus, ou peste et 'inc' diminutif de 'incorporated' peut être traduit par coopérative ou entreprise. Vous voila donc plongé dans 'L'Entreprise du Virus' un nom digne de 1984 : 'Le Ministère des Virus et de la Régulation Démographique' Ça nous fait un superbe acronyme : MVRD. J'aurais pu rajouter 'Et de la Santé Publique' on tape dans du très haut niveau là : MVRDESP aussi… Les Humains sont tellement fragiles, protégeons-les ! La plus grande menace pour l'Homme étant l'Homme, faites une bonne action : jouez à ce jeu ! + +Plague inc est donc un jeu de stratégie où le but est de réduire l'humanité à néant… Simple ? Non ! Il vous faudra manipuler avec dextérité et prudence un virus pour anéantir des humains qui ne sont pas super collaboratifs… Pire, ces petits rigolos veulent sauver leurs peaux et recherchent activement un remède à ce mystérieux virus inconnu… + +## Contrôles + +Lancez le jeu, et pressez n'importe quelle touche pour passer l'écran principal. Une fois sur l'écran représentant la Terre, plusieurs choix s'offrent à vous : + - [OPTN] permet d'afficher / cacher la barre en dessous du monde qui vous affiche vos points ADN et la barre de recherche des humains. + - [VARS] permet de passer au gros du jeu : les mutations. Ce menu vous affiche vos points ADN, mais aussi les mutations sélectionnées ainsi que vos point de contagion, de sévérité, et de létalité. Dans ce menu, vous pouvez modifier tout cela. + - [x^2] permet d'accéder au menu statistique qui vous affiche les stats sur les humains. La barre symbolise la popuation totale : donc la somme de toute les barre doit donné une seule barre entière. + +De manière générale, si vous êtes perdu, [EXIT] vous ramènera toujours sur la mappemonde. + +Dans le menu des mutations, vous pouvez modifier vos caractéristiques via les touches F1 à F6 comme suit : + - [F1] sert à changer les symptômes de votre maladie + - [F3] sert à changer les capacités d'adaptation de votre maladie + - [F5] sert à modifier les moyens de transmission de votre maladie + - [F6] sert à revenir au menu principal avec la mappemonde + +## Mutations + +Dans ce jeu, vous aurez le choix entre plusieurs mutations pour faire le plus de dégât possible parmis les humains ! Comme dans le jeu d'origine, celles-ci sont divisées en 3 catégories : Symptômes, Capacités, et Transmissions. + +Toutes les mutations ont plusieurs spécificités : + - Contagion qui détermine la proportion de personnes infectées + - Sévérité touche la recherche, on peut la comprendre de la manière suivante : si la sévérité est élevée, la maladie est grave, elle entraine par conséquent une recherche active de la part des Humains. Néanmoins, votre compteur de points ADN, augmente plus vite… + - Létalité détermine le taux de mortalité parmi les infectés… Une létalité élevée fera de votre maladie une veritable machine à tuer, mais cela vous dévoile au grand jour et accèlere la recherche ! + - ADN, du nom de la molècule qui compose le code génétique. Ici, rien à voir, les points ADN vous permettent d'acheter des mutations. + - Changement : certaines mutations par leur nature ralentissent la recherche, c'est ce ralentissement qui est symbolysé par changement. Concrétement, plus une maladie a de *changement* plus elle ralentit la recherche… + +### Symptômes + +Comme son nom l'indique, votre maladie aussi puissante soit-elle n'est pas invisible : elle présente certains symptômes qui ont leurs spécificités. Bien entendu, les symptômes présentés dans ce jeu font partie du jeu d'origines et leurs spécificités sont proches. + +|Nom|Coût ADN|Pt de contagion|Pt de sévérité|Pt de létalité|Changement| +|:---:|:---:|:---:|:---:|:---:|:---:| +|nausée|2|1|1|0|0,5 +|vomissement|4|3|2|0|0,5 +|tumeurs|15|4|2|5|1 +|pneumonie|4|2|2|0|0,5 +|toux|3|2|1|0|0,5 +|arrêt total des organes|30|0|20|25|2 +|folie|20|6|15|0|2 +|paranoïa|5|0|4|0|1 +|lésions|10|5|4|0|0,5 +|hémorragie|20|5|15|15|0,5 +|plaies|3|2|1|0|0,5 +|infections|17|6|7|6|0,5 +|immunodéficience|12|2|6|4|1 +|inflammation|5|2|2|2|0,5 + +### Capacités + +En mutant, votre maladie peut acquérir des capacités. Ces capacités lui permettent de mieux apréhender un milieu ou une situation, ainsi la capacité *Résistance au froid* donne un suplément de vigueur à votre virus dans les pays froid. Cela se traduit par une augmentation plus ou moins forte de la contagion dans ces régions du monde… + +|Nom|Pt de contagion|Pt de sévérité|Pt de létalité|Coût ADN| +|:---:|:---:|:---:|:---:|:---:| +|résistance au froid|+4|||10 +|résistance au chand|+7|||15 +|résistance à l'environnement|+10|||30 +|résistance aux médicaments||+2|+0,5|15 +|résistance génétique||+5|+1|25 +|mutation accélérée||+8|+2|30 + +### Moyens de transmissions + +Votre maladie aura tout le loisir de changer ses moyens de transmission ! Plus ou moins efficaces ceux-ci permettent à votre maladie d'accéder à des caractérestiques intéressantes qui lui permettront de coloniser le monde entier ! ;) + +|Nom|Pt de contagion|Coût ADN| +|:---:|:---:|:---:| +|air Nv 1|+2|9 +|air Nv 2|+5|15 +|air Nv 3|+8|20 +|air et eau|+10|30 +|eau Nv 1|+2|9 +|eau Nv 2|+3|12 +|eau Nv 3|+9|25 +|oiseau Nv 1|+3|12 +|oiseau Nv 2|+5|18 +|animaux Nv 1|+2|10 +|animaux Nv 2|+6|16 +|sang Nv 1|+1|8 +|sang Nv 2|+4|14 +|sang Nv 3|+9|20 diff --git a/Sources/CMakeLists.txt b/Sources/CMakeLists.txt new file mode 100644 index 0000000..25fd95d --- /dev/null +++ b/Sources/CMakeLists.txt @@ -0,0 +1,41 @@ +# Configure with [fxsdk build-fx] or [fxsdk build-cg], which provide the +# toolchain file and module path of the fxSDK + +cmake_minimum_required(VERSION 3.18) +project(MyAddin) + +include(GenerateG1A) +include(GenerateG3A) +include(Fxconv) +find_package(Gint 2.1 REQUIRED) + +set(SOURCES + src/main.c + # ... +) +# Shared assets, fx-9860G-only assets and fx-CG-50-only assets +set(ASSETS + # ... +) +set(ASSETS_fx + assets-fx/example.png + # ... +) +set(ASSETS_cg + assets-cg/example.png + # ... +) + +fxconv_declare_assets(${ASSETS} ${ASSETS_fx} ${ASSETS_cg} WITH_METADATA) + +add_executable(myaddin ${SOURCES} ${ASSETS} ${ASSETS_${FXSDK_PLATFORM}}) +target_compile_options(myaddin PRIVATE -Wall -Wextra -Os) +target_link_libraries(myaddin Gint::Gint) + +if("${FXSDK_PLATFORM_LONG}" STREQUAL fx9860G) + generate_g1a(TARGET myaddin OUTPUT "MyAddin.g1a" + NAME "MyAddin" ICON assets-fx/icon.png) +elseif("${FXSDK_PLATFORM_LONG}" STREQUAL fxCG50) + generate_g3a(TARGET myaddin OUTPUT "MyAddin.g3a" + NAME "MyAddin" ICONS assets-cg/icon-uns.png assets-cg/icon-sel.png) +endif() diff --git a/Sources/assets-fx/fonts/._plague.png b/Sources/assets-fx/fonts/._plague.png new file mode 100644 index 0000000..b6d673a Binary files /dev/null and b/Sources/assets-fx/fonts/._plague.png differ diff --git a/Sources/assets-fx/fonts/plague.png b/Sources/assets-fx/fonts/plague.png new file mode 100644 index 0000000..6c25191 Binary files /dev/null and b/Sources/assets-fx/fonts/plague.png differ diff --git a/Sources/assets-fx/fxconv-metadata.txt b/Sources/assets-fx/fxconv-metadata.txt new file mode 100644 index 0000000..d435d5f --- /dev/null +++ b/Sources/assets-fx/fxconv-metadata.txt @@ -0,0 +1,3 @@ +example.png: + type: bopti-image + name: img_example diff --git a/Sources/assets-fx/icon-fx.png b/Sources/assets-fx/icon-fx.png new file mode 100644 index 0000000..e323f42 Binary files /dev/null and b/Sources/assets-fx/icon-fx.png differ diff --git a/Sources/assets-fx/img/.DS_Store b/Sources/assets-fx/img/.DS_Store new file mode 100644 index 0000000..528637b Binary files /dev/null and b/Sources/assets-fx/img/.DS_Store differ diff --git a/Sources/assets-fx/img/._.DS_Store b/Sources/assets-fx/img/._.DS_Store new file mode 100644 index 0000000..9ad849c Binary files /dev/null and b/Sources/assets-fx/img/._.DS_Store differ diff --git a/Sources/assets-fx/img/._avions.png b/Sources/assets-fx/img/._avions.png new file mode 100644 index 0000000..7792827 Binary files /dev/null and b/Sources/assets-fx/img/._avions.png differ diff --git a/Sources/assets-fx/img/._fonds.png b/Sources/assets-fx/img/._fonds.png new file mode 100644 index 0000000..cf71e88 Binary files /dev/null and b/Sources/assets-fx/img/._fonds.png differ diff --git a/Sources/assets-fx/img/._muta.png b/Sources/assets-fx/img/._muta.png new file mode 100644 index 0000000..1e2f977 Binary files /dev/null and b/Sources/assets-fx/img/._muta.png differ diff --git a/Sources/assets-fx/img/._pieces.png b/Sources/assets-fx/img/._pieces.png new file mode 100644 index 0000000..3f107cf Binary files /dev/null and b/Sources/assets-fx/img/._pieces.png differ diff --git a/Sources/assets-fx/img/._titre.png b/Sources/assets-fx/img/._titre.png new file mode 100644 index 0000000..2e062c8 Binary files /dev/null and b/Sources/assets-fx/img/._titre.png differ diff --git a/Sources/assets-fx/img/avions.png b/Sources/assets-fx/img/avions.png new file mode 100644 index 0000000..b1cc4d2 Binary files /dev/null and b/Sources/assets-fx/img/avions.png differ diff --git a/Sources/assets-fx/img/fonds.png b/Sources/assets-fx/img/fonds.png new file mode 100644 index 0000000..a50e413 Binary files /dev/null and b/Sources/assets-fx/img/fonds.png differ diff --git a/Sources/assets-fx/img/muta.png b/Sources/assets-fx/img/muta.png new file mode 100644 index 0000000..6970d18 Binary files /dev/null and b/Sources/assets-fx/img/muta.png differ diff --git a/Sources/assets-fx/img/pieces.png b/Sources/assets-fx/img/pieces.png new file mode 100644 index 0000000..985aedf Binary files /dev/null and b/Sources/assets-fx/img/pieces.png differ diff --git a/Sources/assets-fx/img/titre.png b/Sources/assets-fx/img/titre.png new file mode 100644 index 0000000..f0beb69 Binary files /dev/null and b/Sources/assets-fx/img/titre.png differ diff --git a/Sources/src/main.c b/Sources/src/main.c new file mode 100644 index 0000000..7067163 --- /dev/null +++ b/Sources/src/main.c @@ -0,0 +1,428 @@ +/* + Nom : Plague + Version : - dev- + Dernière modification : 28 Décembre 2019 + + Liste des choses à faire : + - Gestion des sélection dans les mutations et menu info + - Gestion des avions + - Moteurs du jeu (gestion du temps et sauvegarde) + - Gestion des pays à inclure dans le modèle infectieux + */ + +#include +#include +#include +#include + + +//display_barre : affiche les infos de la barre en dessous du monde +void display_barre (const int *adn, const int *recherche, const int *limite); + +//display_menu : affiche les données sur l'écran menu du jeu à partir duquel on peut modifier la maladie +void display_menu (const int *adn, const int *contagion, const int *severite, const int *letalite, const int *sel_symp, const int *sel_capa, const int *sel_trans); + +//display_info : affiche les infos sur la maladie selectionnée +void display_info (const char *nom, const int adn, const int conta, const int leta, const int sev); + +//display_stats : affiche les statistiques des humains +void display_stats(const double *sains, const double *infectes, const double *morts, const double *gueris, const double *total); + +//menu : gère les tableaux des mutations en fonction de la variable 'variable' +int menu (const int menu_muta, const image_t *img_fonds, const int nv_symp, const int nv_capa, const int nv_trans); + +//modele_infectieux : calcule la propagation de la maladie +void modele_infectieux (double *sains, double *infectes, double *morts, double *gueris, double *s_avant, double *i_avant, double *m_avant, double *g_avant, int *contagion, int *severite, int *letalite, int *changement); + +//floor : renvoie la partie entière d'une variable +double floor (double x); + +//init_mat : remplis la matrice dest à partir de src +void init_mat(int x, int y, int dest[][x], int src[][x]); + +//strcpy : copie une chaîne de caractère dans une autre +char * strcpy(char * dest, const char * src); + +//strtok : recherche les champs en fonction du séparateur +char * strtok(char * src, const char * separateur); + +//atof : convertit le texte en double +double atof(const char *nptr); + + +int main (void) +{ + extern const font_t font_plague; // Déclaration de la police custom + extern const image_t img_titre; // Déclaration de l'image-titre + extern const image_t img_fonds; // Déclaration des différents fonds du jeu + //extern const image_t img_avions; // Déclaration des avions + + dfont(&font_plague);// On change la police pour la police custom + + int fond = 1, fin = 0, key = 0, menu_muta = 0;//variables diverses pour le jeu + int recherche = 0, limite = 100, adn = 0, contagion = 0, severite = 0, letalite = 0, nv_symp = 1, nv_capa = 1, nv_trans = 1, sel_symp = 1, sel_capa = 1, sel_trans = 1;// Variables pour la maladie + double total = 10000000000, sains = total, infectes = 0, morts = 0, gueris = 0, s_avant, i_avant, m_avant, g_avant;// Variables pour les statistiques des humains + double changement = 0, priorite = 0;// Variables pour le modèle infectieux + + dclear(C_WHITE); + dimage(0, 0, &img_titre); + dupdate(); + getkey(); + // Fin de l'écran d'accueil + + while (fin == 0) + { + dclear(C_WHITE); + dsubimage(0, 0, &img_fonds, 0, 65 * (fond - 1), 128, 64, 0); + + switch (fond)// Affichage supplémentaires dépendant des fonds. + { + case 2: + display_barre(&adn, &recherche, &limite);// Monde avec la barre en dessous + break; + case 3: + display_menu(&adn, &contagion, &severite, &letalite, &sel_symp, &sel_capa, &sel_trans);// Menu de modification de la maladie + break; + case 6: + display_stats(&sains, &infectes, &morts, &gueris, &total);// Satistiques des humains + break; + } + + dupdate(); // Mise à jour de l'écran + key = getkey().key; + + switch (key) // Detection de la touche + { + case KEY_OPTN: + if (fond == 1) fond = 2; + else if (fond == 2) fond = 1; + break; + case KEY_VARS: + fond = 3; + break; + case KEY_SQUARE: + fond = 6; + break; + case KEY_F1: + if (fond == 3) menu_muta = 1; + break; + case KEY_F3: + if (fond == 3) menu_muta = 2; + break; + case KEY_F5: + if (fond == 3) menu_muta = 3; + break; + case KEY_F6: + if (fond == 3) fond = 1; + break; + case KEY_EXIT: + if (fond != 1) fond = 1; + else fin = 1; + break; + } + if (menu_muta != 0) menu_muta = menu(menu_muta, &img_fonds, nv_symp, nv_capa, nv_trans); + } + return 0; +} + + +void display_barre (const int *adn, const int *recherche, const int *limite) +{ + // Recherche (jauge = 74 pxl) donc : 74 * (recherche / 100) pour le pourcentage + int variable; + char string[100]; + variable = 74 * *recherche / *limite; + sprintf(string, "%d", *adn); + dtext(9, 58, string, C_BLACK, C_NONE); + dline(51, 60, 51 + variable, 60, C_BLACK); + dline(51, 59, 51 + variable, 59, C_BLACK); +} + + +void display_menu (const int *adn, const int *contagion, const int *severite, const int *letalite, const int *sel_symp, const int *sel_capa, const int *sel_trans) +{ + // toutes les jauges font 67 pxl de long. + extern const image_t img_muta; + int variable; + char string[100]; + sprintf(string, "%d", *adn); + dtext(102, 37, string, C_BLACK, C_NONE); + + variable = 67 * *contagion / 26; + dline(57, 48, 57 + variable, 48, C_BLACK); + dline(57, 49, 57 + variable, 49, C_BLACK); + + variable = 67 * *severite / 20; + dline(57, 54, 57 + variable, 54, C_BLACK); + dline(57, 55, 57 + variable, 55, C_BLACK); + + variable = 67 * *letalite / 33; + dline(57, 60, 57 + variable, 60, C_BLACK); + dline(57, 61, 57 + variable, 61, C_BLACK); + + dsubimage(5, 15, &img_muta, 0, 16 * (*sel_symp - 1), 15, 15, 0); + dsubimage(35, 15, &img_muta, 16, 16 * (*sel_capa - 1), 15, 15, 0); + dsubimage(65, 15, &img_muta, 32, 16 * (*sel_trans - 1), 15, 15, 0); +} + + +void display_info (const char *nom, const int adn, const int conta, const int leta, const int sev) +{ + char string[100]; + extern const image_t img_fonds; + extern const image_t img_muta; + + dclear(C_WHITE); + dsubimage(0, 0, &img_fonds, 0, 195, 128, 64, 0); + + dtext(47, 25, nom, C_BLACK, C_NONE); + sprintf(string, "%d", adn); + dtext(73, 33, string, C_BLACK, C_NONE); + + sprintf(string, "%d", conta); + dtext(81, 41, string, C_BLACK, C_NONE); + + sprintf(string, "%d", leta); + dtext(74, 49, string, C_BLACK, C_NONE); + + sprintf(string, "%d", sev); + dtext(75, 57, string, C_BLACK, C_NONE); + + dupdate(); + getkey(); +} + + +void display_stats (const double *sains, const double *infectes, const double *morts, const double *gueris, const double *total) +{ + // Toutes les jauges font 63 pxl + int variable; + + variable = 63 * *sains / *total; + dline(61, 31, 61 + variable, 31, C_BLACK); + dline(61, 32, 61 + variable, 32, C_BLACK); + + variable = 63 * *infectes / *total; + dline(61, 39, 61 + variable, 39, C_BLACK); + dline(61, 40, 61 + variable, 40, C_BLACK); + + variable = 63 * *morts / *total; + dline(61, 47, 61 + variable, 47, C_BLACK); + dline(61, 48, 61 + variable, 48, C_BLACK); + + variable = 63 * *gueris / *total; + dline(61, 55, 61 + variable, 55, C_BLACK); + dline(61, 56, 61 + variable, 56, C_BLACK); + +} + + +int menu (const int menu_muta, const image_t *img_fonds, const int nv_symp, const int nv_capa, const int nv_trans) +{ + extern const image_t img_muta; + extern const image_t img_pieces; + const char * sous_str; + int variable, contagion = 0, letalite = 0, severite = 0, cout_adn = 0; + double changement = 0.0; + int x = 0, y = 0, i, j, fin = 0, key = 0, lim = 0; + int tableau[4][8]; + + int symp_1[4][8] = {{1, 15, 15, 15, 3, 0, 0, 0},{0, 0, 15, 15, 0, 0, 0, 0},{0, 0, 15, 0, 15, 0, 0, 0},{0, 15, 15, 6, 15, 15, 0, 0}}; + int symp_2[4][8] = {{1, 2, 15, 4, 3, 0, 0, 0},{0, 0, 15, 15, 0, 0, 0, 0},{0, 0, 15, 0, 12, 0, 0, 0},{0, 15, 7, 6, 9, 15, 0, 0}}; + int symp_3[4][8] = {{1, 2, 5, 4, 3, 0, 0, 0},{0, 0, 15, 15, 0, 0, 0, 0},{0, 0, 15, 0, 12, 0, 0, 0},{0, 10, 7, 6, 9, 11, 0, 0}}; + int symp_4[4][8] = {{1, 2, 5, 4, 3, 0, 0, 0},{0, 0, 14, 13, 0, 0, 0, 0},{0, 0, 8, 0, 12, 0, 0, 0},{0, 10, 7, 6, 9, 11, 0, 0}}; + + int capa_1[4][8] = {{1, 0, 0, 0, 6, 0, 0, 0},{7, 7, 0, 7, 0, 0, 0, 0},{0, 0, 0, 0, 7, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0}}; + int capa_2[4][8] = {{1, 0, 0, 0, 6, 0, 0, 0},{2, 7, 0, 3, 0, 0, 0, 0},{0, 0, 0, 0, 7, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0}}; + int capa_3[4][8] = {{1, 0, 0, 0, 6, 0, 0, 0},{2, 5, 0, 3, 0, 0, 0, 0},{0, 0, 0, 0, 4, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0}}; + + int trans_1[4][8] = {{1, 14, 14, 0, 14, 5, 0, 0},{0, 0, 0, 14, 0, 0, 0, 11},{9, 14, 0, 0, 0, 0, 0, 14},{0, 0, 14, 14, 0, 0, 0, 14}}; + int trans_2[4][8] = {{1, 2, 14, 0, 6, 5, 0, 0},{0, 0, 0, 14, 0, 0, 0, 11},{9, 10, 0, 0, 0, 0, 0, 12},{0, 0, 0, 14, 14, 0, 0, 14}}; + int trans_3[4][8] = {{1, 2, 3, 0, 6, 5, 0, 0},{0, 0, 0, 14, 0, 0, 0, 11},{9, 10, 0, 0, 0, 0, 0, 12},{0, 0, 0, 7, 14, 0, 0, 13}}; + int trans_4[4][8] = {{1, 2, 3, 0, 6, 5, 0, 0},{0, 0, 0, 4, 0, 0, 0, 11},{9, 10, 0, 0, 0, 0, 0, 12},{0, 0, 0, 7, 8, 0, 0, 13}}; + + char element_sel[50], nom[50]; + const char *symptome[] = {"NAUSEE,1,1,0,0.5,2", "VOMISSEMENT,3,2,0,0.5,4", "TOUX,2,1,0,0.5,3", "PNEUMONIE,2,2,0,0.5,4", "TUMEURS,4,2,5,0.5,15", "PLAIE,2,1,0,0.5,3", "LESION,5,4,0,0.5,10", "HEMORAGIE,0,15,15,0.5,20", "INFLAMATION,2,2,2,0.5,5", "INFECTION,6,7,6,0.5,17", "SIDA,2,6,4,0.5,12", "PARANOIA,0,4,1,1,5", "FOLIE,6,15,0,2,20", "CYROSE,0,20,25,0,30"}; + + switch (menu_muta)// Remplissage de la matrice pour afficher les mutations + { + case 1: + lim = 15; + switch (nv_symp) + { + case 1: + init_mat(8, 4, tableau, symp_1); + break; + case 2: + init_mat(8, 4, tableau, symp_2); + break; + case 3: + init_mat(8, 4, tableau, symp_3); + break; + case 4: + init_mat(8, 4, tableau, symp_4); + break; + } + break; + + case 2: + lim = 7; + switch (nv_capa) + { + case 1: + init_mat(8, 4, tableau, capa_1); + break; + case 2: + init_mat(8, 4, tableau, capa_2); + break; + case 3: + init_mat(8, 4, tableau, capa_3); + break; + } + break; + + case 3: + lim = 14; + switch (nv_trans) + { + case 1: + init_mat(8, 4, tableau, trans_1); + break; + case 2: + init_mat(8, 4, tableau, trans_2); + break; + case 3: + init_mat(8, 4, tableau, trans_3); + break; + case 4: + init_mat(8, 4, tableau, trans_4); + break; + } + break; + } + + while (fin == 0) + { + dclear(C_WHITE); + dsubimage(0, 0, img_fonds, 0, 260, 128, 64, 0); + + for (i = 0 ; i <= 7 ; i++) + { + for (j = 0 ; j <= 3; j++) + { + if (tableau[j][i] != 0) dsubimage(16 * i, 16 * j, &img_muta, 16 * (menu_muta - 1), 16 * (tableau[j][i] - 1), 15, 15, 0); + } + } + + if (tableau[y][x] == lim) dsubimage(16 * x - 1, 16 * y - 1, &img_pieces, 0, 18, 17, 17, 0); + else dsubimage(16 * x - 1, 16 * y - 1, &img_pieces, 0, 0, 17, 17, 0); + dupdate(); + key = getkey().key; + + switch (key) + { + case KEY_LEFT: + if (x > 0) x -= 1; + break; + case KEY_RIGHT: + if (x < 7) x += 1; + break; + case KEY_UP: + if (y > 0) y -= 1; + break; + case KEY_DOWN: + if (y < 3) y += 1; + break; + case KEY_EXIT: + fin = 1; + break; + case KEY_EXE: + if (tableau[y][x] != lim && tableau[y][x] != 0) fin = 2; + else fin = 0; + break; + } + } + if (fin == 2) + { + switch(menu_muta) + { + case 1: + strcpy(element_sel, symptome[tableau[y][x] - 1]); + break; + } + variable = 0; + while(1) + { + if(variable == 0) sous_str = strtok(element_sel, ","); + else sous_str = strtok(NULL, ","); + variable ++; + + switch (variable) + { + case 1: + strcpy(nom, sous_str); + break; + case 2: + contagion = floor(atof(sous_str)); + break; + case 3: + severite = floor(atof(sous_str)); + break; + case 4: + letalite = floor(atof(sous_str)); + break; + case 5: + changement = atof(sous_str); + break; + case 6: + cout_adn = floor(atof(sous_str)); + break; + + + } + + if(sous_str == NULL) break; + } + display_info (nom, cout_adn, contagion, letalite, severite); + + + + } + + + + return 0; +} + + +void modele_infectieux (double *sains, double *infectes, double *morts, double *gueris, double *s_avant, double *i_avant, double *m_avant, double *g_avant, int *contagion, int *severite, int *letalite, int *changement) +{ + double r = *contagion / 2600, a = *severite / (200 - *changement), b = *letalite / 3300; + + *sains = floor(*s_avant - r * *s_avant); + *infectes = floor (*i_avant + r * *s_avant - *i_avant * b - *i_avant * a); + *morts = floor (*m_avant + *infectes * b); + *gueris = floor(*g_avant + *infectes * a); + + *s_avant = *sains; + *i_avant = *infectes; + *m_avant = *morts; + *g_avant = *gueris; +} + + +double floor (double x) +{ + return (int)x; +} + +void init_mat(int x, int y, int dest[][x], int src[][x]) +{ + for (int i = 0 ; i < x ; i++) + { + for (int j = 0 ; j < y ; j++) + { + dest[j][i] = src[j][i]; + } + } +}