예제 #1
0
  /**
   * 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

            }
          }
        }
      }
    }
  }
예제 #2
0
 /**
  * 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);
   }
 }
예제 #3
0
  /**
   * 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);
      }
    }
  }