Refonte du projet

This commit is contained in:
Shadow15510 2021-05-24 09:31:55 +02:00
parent d4bf07bce9
commit 543acaa2f0
28 changed files with 0 additions and 668 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,88 +0,0 @@
# 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

View File

@ -1,134 +0,0 @@
#! /usr/bin/make -f
# Default Makefile for fxSDK add-ins. This file was probably copied there by
# the [fxsdk] program.
#---
#
# Configuration
#
include project.cfg
# Compiler flags
cf := -mb -ffreestanding -nostdlib -Wall -Wextra \
-fstrict-volatile-bitfields $(CFLAGS)
cf-fx := $(cf) -m3 -DFX9860G
cf-cg := $(cf) -m4-nofpu -DFXCG50
# Linker flags
lf-fx := $(LDFLAGS) -Tfx9860g.ld -lgint-fx -lgcc -Wl,-Map=build-fx/map
lf-cg := $(LDFLAGS) -Tfxcg50.ld -lgint-cg -lgcc -Wl,-Map=build-cg/map
dflags = -MMD -MT $@ -MF $(@:.o=.d) -MP
cpflags := -R .bss -R .gint_bss
g1af := -i "$(ICON_FX)" -n "$(NAME)" --internal="$(INTERNAL)"
g3af := -n basic:"$(NAME)" -i uns:"$(ICON_CG_UNS)" -i sel:"$(ICON_CG_SEL)"
#
# File listings
#
null :=
filename := $(subst $(null) $(null),-,$(NAME))
elf = $(dir $<)$(filename).elf
bin = $(dir $<)$(filename).bin
target-fx := $(filename).g1a
target-cg := $(filename).g3a
# Source files
src := $(wildcard src/*.c)
assets-fx := $(wildcard assets-fx/**/*)
assets-cg := $(wildcard assets-cg/**/*)
# Object files
obj-fx := $(src:%.c=build-fx/%.o) $(assets-fx:assets-fx/%=build-fx/assets/%.o)
obj-cg := $(src:%.c=build-cg/%.o) $(assets-cg:assets-cg/%=build-cg/assets/%.o)
# Additional dependencies
deps-fx := $(ICON_FX)
deps-cg := $(ICON_CG_UNS) $(ICON_CG_SEL)
# All targets
all :=
ifneq "$(wildcard build-fx)" ""
all += all-fx
endif
ifneq "$(wildcard build-cg)" ""
all += all-cg
endif
#
# Build rules
#
all: $(all)
all-fx: $(target-fx)
all-cg: $(target-cg)
$(target-fx): $(obj-fx) $(deps-fx)
sh3eb-elf-gcc -o $(elf) $(obj-fx) $(cf-fx) $(lf-fx)
sh3eb-elf-objcopy -O binary $(cpflags) $(elf) $(bin)
fxg1a $(bin) -o $@ $(g1af)
$(target-cg): $(obj-cg) $(deps-cg)
sh4eb-elf-gcc -o $(elf) $(obj-cg) $(cf-cg) $(lf-cg)
sh4eb-elf-objcopy -O binary $(cpflags) $(elf) $(bin)
mkg3a $(g3af) $(bin) $@
# C sources
build-fx/%.o: %.c
@ mkdir -p $(dir $@)
sh3eb-elf-gcc -c $< -o $@ $(cf-fx) $(dflags)
build-cg/%.o: %.c
@ mkdir -p $(dir $@)
sh4eb-elf-gcc -c $< -o $@ $(cf-cg) $(dflags)
# Images
build-fx/assets/img/%.o: assets-fx/img/%
@ mkdir -p $(dir $@)
fxconv -i $< -o $@ --fx name:img_$(basename $*)
build-cg/assets/img/%.o: assets-cg/img/%
@ mkdir -p $(dir $@)
fxconv -i $< -o $@ --cg name:img_$(basename $*)
# Fonts
build-fx/assets/fonts/%.o: assets-fx/fonts/%
@ mkdir -p $(dir $@)
fxconv -f $< -o $@ name:font_$(basename $*) $(FONT.$*)
build-cg/assets/fonts/%.o: assets-cg/fonts/%
@ mkdir -p $(dir $@)
fxconv -f $< -o $@ name:font_$(basename $*) $(FONT.$*)
#
# Cleaning and utilities
#
# Dependency information
-include $(shell find build* -name *.d 2> /dev/null)
build-fx/%.d: ;
build-cg/%.d: ;
.PRECIOUS: build-fx build-cg build-fx/%.d build-cg/%.d %/
clean:
@ rm -rf build*
distclean: clean
@ rm -f $(target-fx) $(target-cg)
install-fx: $(target-fx)
p7 send -f $<
install-cg: $(target-cg)
@ while [[ ! -h /dev/Prizm1 ]]; do sleep 1; done
@ mount /dev/Prizm1
@ rm -f /mnt/prizm/$<
@ cp $< /mnt/prizm
@ umount /dev/Prizm1
@- eject /dev/Prizm1
.PHONY: all all-fx all-cg clean distclean install-fx install-cg

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

View File

@ -1,23 +0,0 @@
#---
# fxSDK project configuration file for Plague
#---
# Project name, should be at most 8 bytes long.
NAME = Plague
# Internal name, should be '@' followed by at most 7 uppercase letters.
INTERNAL = @PLAGUE
# fx-9860G icon location
ICON_FX = assets-fx/icon-fx.png
# fx-CG 50 icon locations
ICON_CG_UNS = assets-cg/icon-cg-uns.png
ICON_CG_SEL = assets-cg/icon-cg-sel.png
# Additional compiler flags
CFLAGS = -std=c11 -Os
# Additional linker flags
LDFLAGS = -L. -lfx
#Font
FONT.plague.png = charset:print grid.size:5x5 grid.padding:1 proportionnal:true

View File

@ -1,423 +0,0 @@
/*
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 <gint/display.h>
#include <gint/keyboard.h>
#include <gint/std/stdio.h>
#include <gint/std/string.h>
//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);
break;
}
dupdate();
key = getkey().key;
switch (key)
{
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];
}
}
}