/** * Regle 6 * * @param * @return 1) De plus, un malade (mort ou vivant) à 10% de probabilité de transmettre le virus * de sa maladie aux citoyens dans le même lieu, le citoyen recevant le virus est alors * automatiquement malade. * <p>2) Si le malade est dans un terrain vague, il a également 1% de chance de transmettre * le virus aux citoyens dans les terrains vagues voisins. * <p>3) Un pompier peut être contaminé et malade, mais grâce à sa tenue de protection, la * niveau de contamination augmente 10 fois moins vite que ce qu'il reçoit d'un lieu et dans * 70% des cas, le virus propagé par un autre citoyen n'arrive pas à traverser sa tenue (ne * le rendant donc pas malade). */ public static void regle6(AbstractCase caseActuel, AbstractPerson p) { /// 1) Vector<AbstractPerson> personnes = caseActuel.getVillageois(); int size = personnes.size(); for (int i = 0; i < size; i++) { AbstractPerson personne = personnes.elementAt(i); int tirage = RandomManager.randInt(0, 100); if ((tirage > 0) && (tirage <= 10)) { // / 1 tirage par citoyen /// CAS CITOYEN MEDECIN if ((personne instanceof Citoyen) || (personne instanceof Medecin)) { personne.setContaminated(true); personne.setMalade(true); } /// CAS POMPIER else if (personne instanceof Pompier) { int tirage2 = RandomManager.randInt(0, 100); if ((tirage2 > 0) && (tirage2 <= 30)) { personne.setContaminated(true); personne.setMalade(true); } } } } /// 2) if (caseActuel instanceof TerrainVague) { Vector<AbstractCase> lieuxVoisins = SharedMethods.lieuxVoisins(caseActuel.getVille(), caseActuel.getPosition()); int size2 = lieuxVoisins.size(); for (int i = 0; i < size2; i++) { AbstractCase currentCase = lieuxVoisins.elementAt(i); if (currentCase instanceof TerrainVague) { // / si Terrain Vague Vector<AbstractPerson> villageois = caseActuel.getVillageois(); for (int j = 0; j < villageois.size(); j++) { AbstractPerson currentPersonne = villageois.elementAt(j); // / Que le citoyens /// CAS CITOYEN MEDECIN if ((currentPersonne instanceof Citoyen) || (currentPersonne instanceof Medecin)) { int tirage = RandomManager.randInt(0, 100); if ((tirage > 0) && (tirage <= 1)) { // / 1 tirage par citoyen currentPersonne.setContaminated(true); // / le contamine ! } } /// CAS POMPIER else if (currentPersonne instanceof Pompier) { // TODO ne pas oublier } } } } } }
/** * Regle 1 * * @param * @return A chaque tour, un citoyen contamineÃÅ aÃÄ un risque (probabiliteÃÅ) de devenir malade * qui est eÃÅgal aÃÄ son niveau de contamination. */ public static void regle1(AbstractPerson p) { int chancesDeDevenirMalade = (int) (p.getNiveauContamination() * 100); int r = RandomManager.randInt(0, 100); if ((r >= 0) && (r <= chancesDeDevenirMalade)) { p.setMalade(true); } }
/** * Regle 2 * * @param * @return A partir du 5ème jour de maladie, il peut décéder des suites de sa maladie. La * probabilité de décéder est de 5% par jour de maladie au delà de 5ème jour de maladie. * Ce risque de décès est diminué de moitié si un médecin est dans le même lieu */ public static void regle2(AbstractCase caseActuel, AbstractPerson p) { if (p.getNombreJourMalade() >= 5) { int probabiliteDeMourrir = (int) ((double) ((p.getNombreJourMalade() - 5) * 0.05)); /// si medecin - risque divis√© par 2 int nombreMedecins = caseActuel.getMedecins().size(); if (nombreMedecins > 0) probabiliteDeMourrir /= 2; int tirage = RandomManager.randInt(0, 100); if ((tirage > 0) && (tirage <= probabiliteDeMourrir)) { p.setMort(true); } } }